数据结构 链表的应用 通讯录管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构链表的应用通讯录管理
实验要求:
一、设计一个含有多个菜单项的程序,菜单项内容如下:
1通讯录链表的建立
2通讯录链表的插入
3通讯录链表的查询
4通讯录链表的删除
5通讯录链表的输出
0退出管理系统
要求只能用0-5来选择菜单项,其他的输入无效
二、分别实现多个菜单项的功能,要求每个功能在操作时都有确认提示
三、编写一个程序实现整个通讯录管理系统,把主菜单的生成和各菜单项功能的实现作为子程序或者函数或者过程来实现。
四、要求关键语句必须要写注释。
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
typedefstructabc{//通讯录结点类型
charnum[5];//编号
charname[9];//姓名
charsex[3];//性别
charphone[13];//电话
charaddr[31];//地址
}DataType;
typedefstructnode{//结点类型定义
DataTypedata;//结点数据域
structnode*next;//结点指针域
}ListNode;
typedefListNode*LinkList; LinkListhead;
ListNode*p;
//函数说明
intmenu_select();
LinkListCreateList(void); voidInsertNode(LinkListhead,ListNode*p); ListNode*ListFind(LinkListhead); voidDelNode(LinkListhead); voidPrintList(LinkListhead);
//主函数
voidmain()
{
for(;;){
switch(menu_select())
{
case1:
printf("**********************************\n"); printf("*通讯录链表的建立*\n");
printf("**********************************\n"); head=CreateList();
break;
case2:
printf("*通讯者信息的添加*\n");
printf("**********************************\n");
printf("编号(4)姓名(8)性别(3)电话(11)地址(31)\n");
printf("*************************************\n");
p=(ListNode*)malloc(sizeof(ListNode));//申请新结点
scanf("%s%s%s%s%s",p->data.num,p->,p->data.sex, p->data.phone,p->data.addr);
InsertNode(head,p);
break;
case3:
printf("***********************************\n");
printf("*通讯录信息的查询*\n");
printf("***********************************\n");
p=ListFind(head);
if(p!=NULL){
printf("编号姓名性别联系电话地址\n");
printf("--------------------------------------------------\n"); printf("%s,%s,%s,%s,%s\n",p->data.num,p->,
p->data.sex,p->data.phone,p->data.addr);
printf("---------------------------------------------------\n");
}
else
printf("没有查到要查询的通讯者!\n");
break;
case4:
printf("*通讯录信息的删除*\n");
printf("***********************************\n"); DelNode(head);//删除结点
break;
case5:
printf("************************************\n"); printf("*通讯录链表的输出*\n");
printf("************************************\n"); PrintList(head);
break;
case0:
printf("\t再见!\n");
return;
}
}
}
intmenu_select()
{
intsn;
printf("通讯录管理系统\n");
printf("===================\n"); printf("1.通讯链表的建立\n");
printf("2.通讯者结点的插入\n");
printf("3.通讯者结点的查询\n");
printf("4.通讯者结点的删除\n");