文档详情

通讯录管理系统C语言—单链表.docx

发布:2025-03-21约8.71千字共20页下载文档
文本预览下载声明

?##一、项目概述

通讯录管理系统是一个用于存储和管理联系人信息的软件。使用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

显示全部
相似文档