- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构
课程设计报告
专 业 计算机科学与技术
班 级 0902班
学 号 2009115010207
姓 名 夏丽霞
指 导 教 师 夏端峰老师
时 间
湖 北 师 范 学 院
计 算 机 科 学 与 技 术 学 院
目 录
链表的应用
1.1设计要求……………………………………………………………6
1.2设计分析……………………………………………………………8
1.3算法实现……………………………………………………………10
1.4程序代码……………………………………………………………12
1.5测试结果……………………………………………………………15
1.6结论分析……………………………………………………………17
第一章 链表的应用
线性表(linear_list)是最常用而且最简单的一种数据结构。简言之,一个线性表是n个数据元素的有限序列,每个数据元素的具体含义在不同情况下各不相同。一个数据元素可以由若干个数据项(item)组成。
线性表有顺序和链式两种存储结构,后者是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。
链表的结点(code)包括两个域,即数据域(存储数据元素信息的域)和指针域(存储该结点直接后继存储位置的域),在本章实验中数据域是为了描述通讯者的相关信息。有性表m同素_list
1.1 设计要求
本章实验的设计要求如下:
建立一个通讯录管理系统,用以实现集中操作功能,如:但通讯录链表的建立、通讯者的插入、通讯者的查询、通讯者的删除以及通讯录表的输出等。
1.2 设计分析
为了实现通讯录管理系统的几种操作功能,首先做出如下总体设计框架
1.3 算法实现
由设计分析中的总体框架分模块来讨论算法实现
实现循环和功能选择
首先需要编写一个主控菜单驱动程序,输入0—5以进入相应的选择项。
假设输入选择用变量mn存储,它作为menu()函数的返回值提供给主函数中的switch语句,使用for循环来实现重复选择,并在主函数中完成这一系列操作。
例如:如上所述,需要设计一个函数menu用来输出信息和处理输入,而该函数必须返回一个mn值给主函数中的switch语句。
该函数如下:
int Menu()
{
int mn;
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,mn);
if(mn0||mn5)
printf(\n输入错误,重选0-5:);
else
break;
}
return mn;
}
使得mn的输入值对应主函数中switch语句的case1—case5,并由此完成各种功能操作。
对于那些不合法的输入(比如mn的输入值大于5或者小于0)则提示“输入错误”信息
并要求重新输入。
通讯录连表的建立
(1)建立链表的方法有两种:头插法和尾插法
头插法:
头结点head有head -next=NULL
再插入新结点p的循环语句中,用
p-next=head -next;
head -next=p;
两个语句来
尾插法:
定义指针 p=head;
用While循环语句去实现新结点的插入并不断修改指针p的指向,以保证p一直指向单链表的最后一个结点。 (p1为新插入的结点)
p-next=p1;
p=p1;
(2)要建立一个带头结点的单链
文档评论(0)