没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![thumb](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/release/download_crawler_static/87675942/bg1.jpg)
继续教育学院
学生实践课程报告
学习中心(函授站)
主要内容
专 业
学 号
姓 名
辅导教师
2022
年
11
月
10
日
![](https://csdnimg.cn/release/download_crawler_static/87675942/bg2.jpg)
武汉理工大学学生实践课程报告
1
第一章 链表的应用
线性表是数据结构中最简单、最常用的一种线性结构,也是学习数据结构全部内容的
基础,其掌握的好坏直接影响着后继课程的学习。线性表的顺序存储结构,即顺序表的概
念相对比较简单,因此,本章的主要任务是使用有关单链表的操作来实现通讯录信息系统
的管理。
1.1 设计要求
本章的设计实验要求使用有关链表的操作来实现通讯录信息系统的管理。为了验证算
法,通讯录管理包括单通讯录链表的建立、通讯者的插入、通讯者的删除、通讯者的查询
及通讯录表的输出等。主控菜单的设计要求使用数字 0—5 来选择菜单项,其他输入则不
起作用。
程序运行后,给出 6 个菜单项的内容和输入提示:
1.通讯录链表的建立
2. 通讯者结点的插入
3. 通讯者结点的查询
4. 通讯者结点的删除
5. 通讯录链表的输出
0. 退出管理系统
请选择 0—5:
1.2 设计分析
1.2.1 主控菜单函数设计分析
1. 实现循环和功能选择
首先编写一个主控菜单驱动程序,输入 0—5 以进入相应选择项。假设输入选择用变量
sn 存储,它作为 menu_select 函数的返回值给 switch 语句。使用 for 循环实现重复选择,并
在主函数 main()中实现。
![](https://csdnimg.cn/release/download_crawler_static/87675942/bg3.jpg)
武汉理工大学学生实践课程报告
2
实际使用时,只有选择大于 5 或小于 0 的值,程序才能结束运行,这就要使用循环控
制。这里使用 for 循环语句实现菜单的循环选择,为了结束程序的运行,使用了“return”
语句,也可以使用“exit(0);”语句。
2. 得到 sn 的合理值
如前所述,应该设计一个函数用来输出提示信息和处理输入,这个函数应该返回一个
数值 sn,以便供给 switch 语句使用。假设函数名为 menu_select,对于 sn 的输入值,在 switch
中 case 语句对应数字 1—5,对于不符合要求的输入,提示输入错误并要求重新输入。将该
函数与主函数合在一起,编译运行程序,即可检查并验证菜单选择是否正确。
1.2.2 功能函数设计分析
1. 建立通讯录链表的设计
这里实际上是要求建立一个带头结点的单链表。建立单链表有两种方法,一种称之为
头插法,另一种称为尾插法。头插法是每次将新插入的结点插入在链表的表头,而尾插法
是将新插入的结点插入在链表的表尾。本次实验用尾插法建立链表的算法设计思想及具体
算法实现。
要建立链表,首先要生成结点,因此,尾插法建立链表的算法描述如下:
(1)使链表的头尾指针 head、rear 指向新生成的头结点(也是尾结点);
(2)置结束标志为 0(假);
(3)While(结束标志不为真)
{
P 指向新生成的结点;
读入一个通讯者数据至新结点的数据域;
将新结点链到尾结点之后;
使尾指针指向新结点;
提示:是否结束建表,读入一个结束标志;
}
(4)尾结点指针域置空值 NULL。
2. 通讯者信息的插入
链表结点的插入,是要求将一个通讯者数据结点按其编号的次序插入有序通讯录表的
![](https://csdnimg.cn/release/download_crawler_static/87675942/bg4.jpg)
武汉理工大学学生实践课程报告
3
相应位置,以保持通讯录表的有序性。插入结点的基本思想是:使用两个指针变量 p1 和 p2
分别指向当前刚访问过的结点和下一个待访问的结点,循环顺序查找链表,寻找插入结点
的位置,其中 p1 指向待插入位置的前一个结点。
(1)用 p1 指向元链表的头结点,p2 指向链表的第一个结点;
(2)while(p2 != NULL && p2->data.num < p->data.num)
{
P1=p2;//p1 指向刚访问过的结点;
P2=p2->next;//p2 指向表的下一个结点;
}
(3)插入新结点。
3. 在有序表中查找指定结点
在有序链表中查找指定结点的算法基本思想是:首先输入要查找的通讯者的编号或姓名,
从表头顺序访问表中结点。如查找成功,则返回一个指向查找到的通讯者信息的结点;若
查找失败,则返回一个空的指针值 NULL。
当按编号查找时,如果需要查找的通讯者编号不在表中,则不一定需要循环比较到表尾,
因为表是按编号递增有序的;而当按姓名查找时,则要循环比较到表尾,才能确定查不到
的情况。
4. 通讯者记录的删除
链表上结点的删除是比较简单的,先调用查询函数,查询到要删除的结点,若没有查
找到则提示“没有查找到要删除的通讯者”,若查找到根据选择删除结点即可。
5. 通讯录链表的输出
通讯录链表的输出只要将表头指针赋给一个指针变量 p,然后用 p 向后扫描,直至表
尾,p 为空为止。
1.3 算法实现
1. 菜单选择函数具体算法实现如下:
int menu_select()
{
int sn;
![](https://csdnimg.cn/release/download_crawler_static/87675942/bg5.jpg)
武汉理工大学学生实践课程报告
4
printf(" 通讯录管理系统 \n");
printf("===============================\n");
printf(" 1.通讯录链表的建立\n");
printf(" 2.通讯者链表的插入\n");
printf(" 3.通讯者链表的查询\n");
printf(" 4.通讯者链表的删除\n");
printf(" 5.通讯录链表的输出\n");
printf(" 0.退出管理系统\n");
printf("===============================\n");
printf(" 请 选 择 0--5: ");
for (;;)
{
scanf("%d",&sn);
if (sn<0 || sn>5)
printf("\n\t 输入错误,重选 0--5: ");
else
break;
}
return sn;
}
2. 建立通讯录链表具体算法实现如下:
LinkList CreateList(void)
{
LinkList head=(ListNode *)malloc(sizeof(ListNode));
ListNode *p,*rear;
int flag=0;
rear=head;
while (flag==0)
{
p=(ListNode *)malloc(sizeof(ListNode));
printf("编号(4) 姓名(8) 性别电话(11) 地址(31)\n");
printf("------------------------------------\n");
scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr)
剩余39页未读,继续阅读
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
fangfangfeng
- 粉丝: 1
- 资源: 6
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)