写一串单链表通讯录管理系统的C语言代码
时间: 2023-11-29 12:05:42 浏览: 111
好的,以下是一个简单的单链表通讯录管理系统的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* 定义联系人结构体 */
struct contact {
char name[20]; // 姓名
char phone[20]; // 电话号码
struct contact *next; // 下一个节点指针
};
/* 定义全局变量 */
struct contact *head = NULL; // 头节点指针
/* 添加联系人 */
void add_contact() {
struct contact *new_contact = (struct contact *)malloc(sizeof(struct contact));
printf("请输入联系人的姓名:");
scanf("%s", new_contact->name);
printf("请输入联系人的电话号码:");
scanf("%s", new_contact->phone);
new_contact->next = head;
head = new_contact;
printf("添加联系人成功!\n");
}
/* 显示所有联系人 */
void show_contacts() {
struct contact *p = head;
if (p == NULL) {
printf("通讯录为空!\n");
return;
}
printf("所有联系人如下:\n");
while (p != NULL) {
printf("姓名:%s,电话:%s\n", p->name, p->phone);
p = p->next;
}
}
/* 查找联系人 */
void find_contact() {
char name[20];
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
struct contact *p = head;
while (p != NULL) {
if (strcmp(p->name, name) == 0) {
printf("查找结果:姓名:%s,电话:%s\n", p->name, p->phone);
return;
}
p = p->next;
}
printf("查找失败,没有找到该联系人!\n");
}
/* 修改联系人 */
void modify_contact() {
char name[20];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
struct contact *p = head;
while (p != NULL) {
if (strcmp(p->name, name) == 0) {
printf("请输入联系人的新电话号码:");
scanf("%s", p->phone);
printf("修改联系人成功!\n");
return;
}
p = p->next;
}
printf("修改失败,没有找到该联系人!\n");
}
/* 删除联系人 */
void delete_contact() {
char name[20];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
struct contact *p = head;
struct contact *prev = NULL;
while (p != NULL) {
if (strcmp(p->name, name) == 0) {
if (prev == NULL) {
head = p->next;
} else {
prev->next = p->next;
}
free(p);
printf("删除联系人成功!\n");
return;
}
prev = p;
p = p->next;
}
printf("删除失败,没有找到该联系人!\n");
}
/* 释放链表空间 */
void free_list() {
struct contact *p = head;
while (p != NULL) {
struct contact *tmp = p;
p = p->next;
free(tmp);
}
head = NULL;
}
int main() {
int choice;
while (1) {
printf("请选择操作:\n");
printf("1. 添加联系人\n");
printf("2. 显示所有联系人\n");
printf("3. 查找联系人\n");
printf("4. 修改联系人\n");
printf("5. 删除联系人\n");
printf("6. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_contact();
break;
case 2:
show_contacts();
break;
case 3:
find_contact();
break;
case 4:
modify_contact();
break;
case 5:
delete_contact();
break;
case 6:
free_list();
printf("程序已退出!\n");
return 0;
default:
printf("无效的操作,请重新选择!\n");
}
}
}
```
这段代码实现了添加、显示、查找、修改、删除联系人等基本操作。需要注意的是,这只是一个简单的示例,实际应用中,还需要考虑很多其他因素,比如输入验证、数据存储等。
阅读全文