通讯录管理系统C语言—单链表.docx
?##一、项目概述
通讯录管理系统是一个用于存储和管理联系人信息的软件。使用C语言的单链表数据结构来实现该系统,能够方便地进行联系人信息的添加、删除、查找、修改以及显示等操作。
##二、单链表基本概念
单链表是一种线性数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。单链表的头节点是链表的起始点,通过头节点可以访问整个链表。
##三、通讯录管理系统功能需求
1.添加联系人:能够输入联系人的姓名、电话号码、电子邮箱等信息,并将其添加到通讯录中。
2.删除联系人:根据联系人姓名或电话号码删除相应的联系人信息。
3.查找联系人:可以根据联系人姓名或电话号码查找并显示其详细信息。
4.修改联系人信息:对已存在的联系人信息进行修改。
5.显示所有联系人:将通讯录中所有联系人的信息依次显示出来。
##四、单链表节点结构设计
```c
typedefstructContact{
charname[50];
charphone[20];
charemail[50];
structContact*next;
}Contact;
```
该结构体定义了一个联系人节点,包含姓名、电话号码、电子邮箱以及指向下一个节点的指针。
##五、主要函数实现
1.创建新节点函数
```c
Contact*createNode(charname[],charphone[],charemail[]){
Contact*newNode=(Contact*)malloc(sizeof(Contact));
if(newNode==NULL){
printf(内存分配失败\n);
returnNULL;
}
strcpy(newNode-name,name);
strcpy(newNode-phone,phone);
strcpy(newNode-email,email);
newNode-next=NULL;
returnnewNode;
}
```
该函数用于创建一个新的联系人节点,并初始化其数据。
2.添加联系人函数
```c
voidaddContact(Contacthead,charname[],charphone[],charemail[]){
Contact*newNode=createNode(name,phone,email);
if(*head==NULL){
*head=newNode;
}else{
Contact*current=*head;
while(current-next!=NULL){
current=current-next;
}
current-next=newNode;
}
printf(联系人添加成功\n);
}
```
该函数将新创建的联系人节点添加到链表的末尾。
3.删除联系人函数
```c
voiddeleteContact(Contacthead,charkey[]){
Contact*current=*head;
Contact*prev=NULL;
while(current!=NULLstrcmp(current-name,key)!=0){
prev=current;
current=current-next;
}
if(current==NULL){
printf(未找到联系人\n);
return;
}
if(prev==NULL){
*head=current-next;
}else{
prev-next=current-next;
}
free(cur