用c语言数据结构编写一个通讯录管理系统代码
时间: 2023-08-22 07:06:02 浏览: 110
抱歉,我是一名自然语言处理模型,无法为您编写代码。但是,我可以给您提供一个通讯录管理系统的数据结构设计和伪代码示例,请参考下文。
数据结构设计:
```c
typedef struct contact {
char name[20];
char phone[12];
char email[30];
} Contact;
typedef struct node {
Contact data;
struct node *next;
} Node;
typedef struct linkedList {
Node *head;
int size;
} LinkedList;
```
伪代码示例:
```c
LinkedList contacts;
// 初始化通讯录
void init() {
contacts.head = NULL;
contacts.size = 0;
}
// 添加联系人
void addContact() {
Node *newNode = (Node*)malloc(sizeof(Node));
printf("请输入联系人姓名:");
scanf("%s", newNode->data.name);
printf("请输入联系人电话:");
scanf("%s", newNode->data.phone);
printf("请输入联系人邮箱:");
scanf("%s", newNode->data.email);
newNode->next = NULL;
if (contacts.head == NULL) {
contacts.head = newNode;
} else {
Node *p = contacts.head;
while (p->next != NULL) {
p = p->next;
}
p->next = newNode;
}
contacts.size++;
printf("联系人添加成功!\n");
}
// 删除联系人
void deleteContact() {
char name[20];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
Node *p = contacts.head, *pre = NULL;
while (p != NULL && strcmp(p->data.name, name) != 0) {
pre = p;
p = p->next;
}
if (p == NULL) {
printf("通讯录中不存在该联系人!\n");
return;
}
if (pre == NULL) {
contacts.head = p->next;
} else {
pre->next = p->next;
}
free(p);
contacts.size--;
printf("联系人删除成功!\n");
}
// 查找联系人
void findContact() {
char name[20];
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
Node *p = contacts.head;
while (p != NULL && strcmp(p->data.name, name) != 0) {
p = p->next;
}
if (p == NULL) {
printf("通讯录中不存在该联系人!\n");
return;
}
printf("联系人姓名:%s\n", p->data.name);
printf("联系人电话:%s\n", p->data.phone);
printf("联系人邮箱:%s\n", p->data.email);
}
// 显示所有联系人
void showContacts() {
if (contacts.size == 0) {
printf("通讯录为空!\n");
return;
}
Node *p = contacts.head;
printf("姓名\t电话\t\t邮箱\n");
while (p != NULL) {
printf("%s\t%s\t%s\n", p->data.name, p->data.phone, p->data.email);
p = p->next;
}
}
// 主函数
int main() {
init();
int choice;
while (1) {
printf("\n");
printf("通讯录管理系统\n");
printf("1. 添加联系人\n");
printf("2. 删除联系人\n");
printf("3. 查找联系人\n");
printf("4. 显示所有联系人\n");
printf("5. 退出系统\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
addContact();
break;
case 2:
deleteContact();
break;
case 3:
findContact();
break;
case 4:
showContacts();
break;
case 5:
printf("谢谢使用!\n");
return 0;
default:
printf("输入错误,请重新选择!\n");
break;
}
}
return 0;
}
```
以上是一个简单的通讯录管理系统的数据结构设计和伪代码示例,仅供参考,具体实现方式还需根据实际需求进行调整。
阅读全文