用C语言帮我做一个有特色功能单链表通讯录并有相关功能介绍
时间: 2024-03-08 17:46:21 浏览: 60
好的,我可以为您提供一个简单的单链表通讯录程序,它可以实现添加联系人、删除联系人、查找联系人、显示通讯录等功能。
程序实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct contact { // 定义联系人结构体
char name[20]; // 姓名
char phone[12]; // 电话号码
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 = NULL;
if (head == NULL) { // 如果头指针为空,则将新联系人作为头节点
head = new_contact;
} else { // 如果头指针不为空,则将新联系人插入到通讯录的尾部
struct contact *p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = new_contact;
}
printf("联系人 %s 添加成功!\n", new_contact->name);
}
// 删除联系人
void delete_contact() {
char name[20];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
struct contact *p = head;
struct contact *prev = NULL;
while (p != NULL && strcmp(p->name, name) != 0) { // 查找要删除的联系人
prev = p;
p = p->next;
}
if (p == NULL) { // 联系人不存在
printf("联系人 %s 不存在!\n", name);
} else { // 找到要删除的联系人
printf("确定要删除联系人 %s 吗?(Y/N)", name);
char confirm[2];
scanf("%s", confirm);
if (confirm[0] == 'Y' || confirm[0] == 'y') {
if (prev == NULL) { // 要删除的联系人是头节点
head = p->next;
} else {
prev->next = p->next;
}
free(p);
printf("联系人 %s 删除成功!\n", name);
} else {
printf("取消删除!\n");
}
}
}
// 查找联系人
void search_contact() {
char name[20];
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
struct contact *p = head;
while (p != NULL && strcmp(p->name, name) != 0) { // 查找要查找的联系人
p = p->next;
}
if (p == NULL) { // 联系人不存在
printf("联系人 %s 不存在!\n", name);
} else { // 找到要查找的联系人
printf("联系人姓名:%s,电话号码:%s\n", p->name, p->phone);
}
}
// 显示通讯录
void display_contact() {
printf("当前通讯录:\n");
printf("姓名\t电话号码\n");
struct contact *p = head;
while (p != NULL) {
printf("%s\t%s\n", p->name, p->phone);
p = p->next;
}
}
int main() {
int choice;
while (1) {
printf("\n");
printf("********************\n");
printf("1. 添加联系人\n");
printf("2. 删除联系人\n");
printf("3. 查找联系人\n");
printf("4. 显示通讯录\n");
printf("5. 退出程序\n");
printf("********************\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_contact();
break;
case 2:
delete_contact();
break;
case 3:
search_contact();
break;
case 4:
display_contact();
break;
case 5:
printf("程序已退出!\n");
return 0;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
}
```
这个通讯录程序具有简单易用的界面,可以方便地添加、删除、查找、显示联系人信息。您可以根据自己的需要进行修改和扩展。
希望这个程序能够帮助到您!
阅读全文