如何使用线性表实现通讯录的建立
时间: 2023-05-19 10:03:46 浏览: 107
可以使用数组或链表来实现通讯录的建立。对于数组实现,可以定义一个固定大小的数组,每个元素存储一个联系人的信息,包括姓名、电话号码等。对于链表实现,可以定义一个节点结构体,每个节点存储一个联系人的信息,并且包含一个指向下一个节点的指针。在实现过程中,可以根据需求选择合适的数据结构。
相关问题
使用线性表实现通讯录的建立的代码
以下是使用线性表实现通讯录的建立的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_PHONE_LEN 11
#define MAX_CONTACTS 100
typedef struct {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
} Contact;
typedef struct {
Contact contacts[MAX_CONTACTS];
int count;
} ContactList;
void addContact(ContactList *list, Contact contact) {
if (list->count >= MAX_CONTACTS) {
printf("通讯录已满,无法添加新联系人!\n");
return;
}
list->contacts[list->count] = contact;
list->count++;
printf("添加联系人成功!\n");
}
void deleteContact(ContactList *list, char *name) {
int i, j;
for (i = 0; i < list->count; i++) {
if (strcmp(list->contacts[i].name, name) == 0) {
for (j = i; j < list->count - 1; j++) {
list->contacts[j] = list->contacts[j + 1];
}
list->count--;
printf("删除联系人成功!\n");
return;
}
}
printf("未找到该联系人!\n");
}
void searchContact(ContactList *list, char *name) {
int i;
for (i = 0; i < list->count; i++) {
if (strcmp(list->contacts[i].name, name) == 0) {
printf("联系人姓名:%s,电话号码:%s\n", list->contacts[i].name, list->contacts[i].phone);
return;
}
}
printf("未找到该联系人!\n");
}
void printContacts(ContactList *list) {
int i;
printf("通讯录中共有 %d 个联系人:\n", list->count);
for (i = 0; i < list->count; i++) {
printf("联系人姓名:%s,电话号码:%s\n", list->contacts[i].name, list->contacts[i].phone);
}
}
int main() {
ContactList list = {0};
int choice;
char name[MAX_NAME_LEN], phone[MAX_PHONE_LEN];
Contact contact;
while (1) {
printf("请选择操作:\n");
printf("1. 添加联系人\n");
printf("2. 删除联系人\n");
printf("3. 查找联系人\n");
printf("4. 显示所有联系人\n");
printf("5. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入联系人姓名:");
scanf("%s", name);
printf("请输入联系人电话号码:");
scanf("%s", phone);
strcpy(contact.name, name);
strcpy(contact.phone, phone);
addContact(&list, contact);
break;
case 2:
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
deleteContact(&list, name);
break;
case 3:
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
searchContact(&list, name);
break;
case 4:
printContacts(&list);
break;
case 5:
printf("程序已退出!\n");
exit(0);
default:
printf("无效的选择!\n");
break;
}
}
return 0;
}
用c++写一个线性表的通讯录程序 通讯录要有编号,姓名,性别,电话,地址 且能实现通讯录的建立,增加,删除,修改,查询等功能 通讯录要能够实现简单的菜单交互
抱歉,我是AI语言模型,无法提供完整代码,以下是一个简单的线性表通讯录程序的框架,可以供您参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义通讯录结构体
typedef struct {
int id; // 编号
char name[20]; // 姓名
char gender[5]; // 性别
char phone[15]; // 电话
char address[50]; // 地址
} Contact;
// 定义线性表结构体
typedef struct {
Contact *data; // 数据
int length; // 长度
int capacity; // 容量
} List;
// 初始化线性表
void initList(List *list) {
list->data = (Contact *)malloc(sizeof(Contact) * 10);
list->length = 0;
list->capacity = 10;
}
// 扩容线性表
void expandList(List *list) {
list->data = (Contact *)realloc(list->data, sizeof(Contact) * (list->capacity + 10));
list->capacity += 10;
}
// 增加联系人
void addContact(List *list, Contact contact) {
if (list->length >= list->capacity) {
expandList(list);
}
list->data[list->length++] = contact;
}
// 删除联系人
void deleteContact(List *list, int id) {
int i, j;
for (i = 0; i < list->length; i++) {
if (list->data[i].id == id) {
for (j = i; j < list->length - 1; j++) {
list->data[j] = list->data[j + 1];
}
list->length--;
break;
}
}
}
// 修改联系人
void modifyContact(List *list, Contact contact) {
int i;
for (i = 0; i < list->length; i++) {
if (list->data[i].id == contact.id) {
list->data[i] = contact;
break;
}
}
}
// 查询联系人
void queryContact(List *list, int id) {
int i;
for (i = 0; i < list->length; i++) {
if (list->data[i].id == id) {
printf("编号:%d\n姓名:%s\n性别:%s\n电话:%s\n地址:%s\n",
list->data[i].id, list->data[i].name, list->data[i].gender,
list->data[i].phone, list->data[i].address);
break;
}
}
}
// 显示所有联系人
void showAllContacts(List *list) {
int i;
for (i = 0; i < list->length; i++) {
printf("编号:%d\n姓名:%s\n性别:%s\n电话:%s\n地址:%s\n\n",
list->data[i].id, list->data[i].name, list->data[i].gender,
list->data[i].phone, list->data[i].address);
}
}
// 菜单交互
void menu(List *list) {
int choice, id;
Contact contact;
while (1) {
printf("1. 增加联系人\n2. 删除联系人\n3. 修改联系人\n4. 查询联系人\n5. 显示所有联系人\n0. 退出\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入编号:");
scanf("%d", &contact.id);
printf("请输入姓名:");
scanf("%s", contact.name);
printf("请输入性别:");
scanf("%s", contact.gender);
printf("请输入电话:");
scanf("%s", contact.phone);
printf("请输入地址:");
scanf("%s", contact.address);
addContact(list, contact);
printf("添加成功!\n");
break;
case 2:
printf("请输入要删除的联系人编号:");
scanf("%d", &id);
deleteContact(list, id);
printf("删除成功!\n");
break;
case 3:
printf("请输入要修改的联系人编号:");
scanf("%d", &id);
printf("请输入新的姓名:");
scanf("%s", contact.name);
printf("请输入新的性别:");
scanf("%s", contact.gender);
printf("请输入新的电话:");
scanf("%s", contact.phone);
printf("请输入新的地址:");
scanf("%s", contact.address);
contact.id = id;
modifyContact(list, contact);
printf("修改成功!\n");
break;
case 4:
printf("请输入要查询的联系人编号:");
scanf("%d", &id);
queryContact(list, id);
break;
case 5:
showAllContacts(list);
break;
case 0:
exit(0);
default:
printf("输入有误,请重新输入!\n");
}
}
}
int main() {
List list;
initList(&list);
menu(&list);
return 0;
}
阅读全文