实现两个链表的合并数据结构课程设计c语言版_第1页
实现两个链表的合并数据结构课程设计c语言版_第2页
实现两个链表的合并数据结构课程设计c语言版_第3页
实现两个链表的合并数据结构课程设计c语言版_第4页
实现两个链表的合并数据结构课程设计c语言版_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告课程设计题目:实现两个链表的合并学生姓名专 业班 级指导教师黎微微计算机信息管理吴志强2013年 01月08 日课程设计目的:课程设计为学生提供了一个既动手乂动脑,独立实践的机会,将课本上的理 论知识和实际有机的结合起來,锻炼学生的分析解决实际问题的能力。提高学生 适应实际,实践编程的能力。二、课程设计题目:实现两个链表的合并要求:1)输入2个单链表2)输出2个单链表合并后形成的结果。三、模块划分:(1)数据模块参考使用课本上的具有头结点的链表抽象数据类型liiiklist,该抽象数据类型中包 含一个elemtype类型的数据和一个指针,在开始用时,elemtvpe定义为整型变量,

2、 指针用來指向下一个元素。对应的使用链表抽象数据类型lniklist基本操作的函 数有:初始化操作函数void ini (linklist *s)。(2)创建链表模块void create(linklist *s)其功能是创建链表录入数据。(3)输出数据模块void display(linklist *s)其功能为是输出s链表中的各项元素,从而验证操作是否成功(4)排序模块void sort(1inklist *s)此函数功能是s链表使用冒泡法对链表进行排序(5)合并链表模块void add(linklist *sl,linklist *s2)其功能是按照题目要求实现两个链表的合并,将s2链表

3、插入到si链表中。(6)主函数模块void main函数中调用了各个模块的函数,从而实现了题目合并排序的要 求四、流程图:结束五、算法设计分析这个两个链表的交叉合并算法主要运用到的是链表的基本操作,定义 节点,将链表的创建、链表的插入、链表内容升序排列,通过主函数调用。 这样就大大精简了主函数的操作。但主函数中很大篇幅用到了 if、else语句, 用以指定链表指定结点,这样就使得本来很精简变得繁琐,降低了程序的质 量。所以其有优点和缺点,但需要不断的改进,不断优化该程序。六、【据结构:(1)数据类型DataType定义如下:typedef int elemtype;(2)带头结点链表抽象数据类

4、型的结点结构定义如下:typedef struct nodeelemtype data;struct node *next;linklist;七、源程序:#defiiie null 0tvpedef mt elemtype;typedef stnict nodeelemtype data;stnict node *next;lm;void*a)a->next=null;void create(lin *a) Im *p,*q=a;elemtype e;pnntf(Mplease mput the data;nn);scanf(”d 役&e);wliile(e!=-l)p=(lin

5、 *)nialloc(sizeof(lm);p->data=e;q->next=p;q=q->next;scanf(”d 役&e);q->next=null;void displav(lm *a)lin *p=a->next;if(a->next=null)pnntf(Mthe lm is empty!nH);elseprmtf(noutput the data:iiH);while(p?=null)printf(,%5d,p->data);p=p->next;void sort(liii *a)lm *p.*q;elemtype t;p

6、=s->next;while(p!=null)q=p->next;while(q?=null)if(p->data>q->data) t=p->data;p->data=q->data;q->data=t;q=q->next;p=p->next;void add(lm *sl Jin *s2)lin *p 1 =a 1 ->next, *p2=a 1, *q 1 =a2->next, *q2=a2;if(sl=null)al=a2;while(pl!=null&&ql !=null)if(p 1 -&

7、gt;data<ql->data) pl=pl->next;p2=p2->nextelse q2->next=q l->next;q 1 ->next=p2->next;p2->next=ql;p2=p2->next;ql=q2 > next;if(ql !=null)p2->next=ql; void mam()lm *al,*a2;sl=(lin *)malloc(sizeof(lm);uiia(al);create(al);displav(al);sort(al);displav(al);a2=(lin *)nial

8、loc(sizeof(lm);mia(a2);create(a2);displav(a2);sort(a2);displav(a2);add(al,a2);display(al)八、实验运行结果显示:pleaseinput thedata;12 34 5-1outputthedata:12345outputthedata:12345pleaseinput thedata;9 8 7i& -1outputthedata:9876outputthedata:6789outputthedata:12345Press .any ;key tocontinue九、实验收获和体会:这次的课程设计,加强了我们动手、思考和解决问题的能力。巩固和 加深了对数据结构的理解,提高综合运用本课程所学知识的能力。培 养了我选用参考书,查阅手册及文献资料的能力。从中我意识到程序 的成功不仅仅是消除语法上的错误,而且还要执行成功。缺乏完整的 思路,尽管语法正确,程序还是无法执行。数据结构的设计考验的不 仅仅是我们对书本知识的理解,还考验了我们分析事物时思维的逻辑

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论