版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告课程设计题目:实现两个链表的合并学生专 业班 级指导教师2012年06 月21 日课程设计目的:课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理 论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生 适应实际,实践编程的能力。二、课程设计题目:实现两个链表的合并要求:1)输入2个单链表2)输出2个单链表合并后形成的结果三、模块划分:(1)数据模块参考使用课本上的具有头结点的链表抽象数据类型lin klist ,该抽象数据类型中包含一个elemtype类型的数据和一个指针,在开始用时,elemtype定义为整 型变量,指针用来指向下一个元素。对应的
2、使用链表抽象数据类型lin klist 基本操作的函数有:初始化操作函数 void in i(li nklist *s)。(2)创建链表模块void create(li nklist *s)其功能是创建链表录入数据。(3)输出数据模块void display(l in klist *s)其功能为是输出s链表中的各项元素,从而验证操作是否成功(4)排序模块void sort(l in klist *s)此函数功能是s链表使用冒泡法对链表进行排序(5)合并链表模块void add(li nklist *s1,li nklist *s2)其功能是按照题目要现两个链表的合并,将s2链表插入到si链表中
3、。(6)主函数模块void mai n(),函数中调用了各个模块的函数,从而实现了题目合并排序的 要求四、流程图:结束五、算法设计分析这个两个链表的交叉合并算法主要运用到的是链表的基本操作,定义 节点,将链表的创建、链表的插入、链表容升序排列,通过主函数调用。这 样就大大精简了主函数的操作。但主函数中很大篇幅用到了if、else语句,用以指定链表指定结点,这样就使得本来很精简变得繁琐,降低了程序的质 量。所以其有优点和缺点,但需要不断的改进,不断优化该程序。六、数据结构:(1)数据类型DataType定义如下:typedef int elemtype;(2)带头结点链表抽象数据类型的结点结构定
4、义如下:typedef struct nodeelemtype data;li nklist;七、源程序:#defi ne null 0typedef int elemtype;typedef struct nodeelemtype data;struct node *n ext;li nklist;void in i(li nklist *s)s->n ext=n ull;void create(li nklist *s)li nklist *p,*q=s;elemtype e;prin tf("please in put the data;' n");sc
5、a nf("%d",&e);while(e!=-1)p=(li nklist *)malloc(sizeof(li nklist); p->data=e;q->n ext=p;q=q->n ext;sea nf("%d",&e);q->n ext=n ull;void display(l in klist *s)lin klist *p=s->n ext;if(s->n ext=n ull)prin tf("the lin klist is empty!n");elseprin tf
6、("output the data:n");while(p!=null)prin tf("%5d",p->data);p=p->n ext;prin tf("n");void sort(l in klist *s)lin klist *p,*q;elemtype t;p=s->n ext;while(p!=null)q=p->n ext;while(q!=null)if(p->data>q->data)t=p->data; p->data=q->data;q->data
7、=t; q=q->n ext; p=p->n ext;void add(li nklist *s1,li nklist *s2)lin klist *p1= s1-> next,*p2=s1,*q1=s2-> next,*q2=s2;if(s1=nu II)s1=s2;while(p1!=null&&q1!=null) if(p1->data<q1->data)p1=p1- >n ext;elseq2->n ext=q1- >n ext;q1- >n ext=p2->n ext;p2->n ext=q
8、1;p2=p2->n ext;q1=q2->n ext;if(q1!=n ull)p2->n ext=q1;void mai n()lin klist *s1,*s2;s1=(li nklist *)malloc(sizeof(li nklist);in i(s1);create(s1);display(s1);sort(s1);display(s1);s2=(li nklist *)malloc(sizeof(li nklist);in i(s2);create(s2);display(s2);sort(s2);display(s2);add(s1,s2);display(sl);八、实验运行结果显示:outputthedata:1234outpuh七lwdatza "1234pleasejjnput thedata ;& 8 7 <6 -1NDUtpiltthedata 876frll«7a9putputthedata:1234data ;hplease Input the1 2 3 4 5 -1cont inue九、实验收获和体会:十、参考文献1国玲.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025湖南长沙浏阳市人民医院公开招聘编外合同制人员8人备考笔试题库及答案解析
- 深度解析(2026)《GBT 25987-2010装甲防暴车》(2026年)深度解析
- 深度解析(2026)《GBT 25931-2010网络测量和控制系统的精确时钟同步协议》
- 福建漳州市2026届国企类选优生招聘(第四批)开考岗位参考考试题库及答案解析
- 2025广西百色市乐业县专业森林消防救援队伍招聘13人备考笔试试题及答案解析
- 2025重庆广播新闻中心政务服务团队人员招聘9人参考考试题库及答案解析
- 深度解析(2026)GBT 25691-2010《土方机械 开斗式铲运机 容量标定》
- 深度解析(2026)《GBT 25656-2010信息技术 中文Linux应用编程界面(API)规范》(2026年)深度解析
- 2025西安交通大学第一附属医院医学影像科招聘劳务派遣助理护士参考考试试题及答案解析
- 共享经济合同纠纷与法律规制研究-基于网约车平台与驾驶员的劳动关系认定
- 2025年烟花爆竹经营单位安全管理人员考试试题及答案
- 2025天津大学管理岗位集中招聘15人参考笔试试题及答案解析
- 2025广东广州黄埔区第二次招聘社区专职工作人员50人考试笔试备考题库及答案解析
- 2025年云南省人民检察院聘用制书记员招聘(22人)考试笔试参考题库及答案解析
- 2026届上海市青浦区高三一模数学试卷和答案
- 2026年重庆安全技术职业学院单招职业技能测试题库附答案
- 环卫设施设备采购项目投标方案投标文件(技术方案)
- 微创机器人手术基层普及路径
- 24- 解析:吉林省长春市2024届高三一模历史试题(解析版)
- 2025年黑龙江省公务员《申论(行政执法)》试题含答案
- 福建省福州市仓山区2024-2025学年三年级上学期期末数学试题
评论
0/150
提交评论