实现两个链表合并(数据结构课程方案c语言版本)

实现两个链表合并(数据结构课程方案c语言版本)

ID:34737276

大小:137.00 KB

页数:10页

时间:2019-03-10

实现两个链表合并(数据结构课程方案c语言版本)_第1页
实现两个链表合并(数据结构课程方案c语言版本)_第2页
实现两个链表合并(数据结构课程方案c语言版本)_第3页
实现两个链表合并(数据结构课程方案c语言版本)_第4页
实现两个链表合并(数据结构课程方案c语言版本)_第5页
资源描述:

《实现两个链表合并(数据结构课程方案c语言版本)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、课程设计报告课程设计题目:实现两个链表的合并学生姓名黎微微专业计算机信息管理班级1141301指导教师吴志强2013年01月08日一、课程设计目的:课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。矚慫润厲钐瘗睞枥庑赖。二、课程设计题目:实现两个链表的合并要求:1)输入2个单链表2)输出2个单链表合并后形成的结果。三、模块划分:(1)数据模块参考使用课本上的具有头结点的链表抽象数据类型link

2、list,该抽象数据类型中包含一个elemtype类型的数据和一个指针,在开始用时,elemtype定义为整型变量,指针用来指向下一个元素。对应的使用链表抽象数据类型linklist基本操作的函数有:初始化操作函数voidini(linklist*s)。聞創沟燴鐺險爱氇谴净。(2)创建链表模块voidcreate(linklist*s)其功能是创建链表录入数据。(3)输出数据模块voiddisplay(linklist*s)其功能为是输出s链表中的各项元素,从而验证操作是否成功(4)排序模块voidso

3、rt(linklist*s)此函数功能是s链表使用冒泡法对链表进行排序(5)合并链表模块voidadd(linklist*s1,linklist*s2)其功能是按照题目要求实现两个链表的合并,将s2链表插入到s1链表中。(6)主函数模块voidmain(),函数中调用了各个模块的函数,从而实现了题目合并排序的要求四、流程图:Creats1链表对s1进行排序Creats2链表对s2进行排序对排序后的s1.s2链表合并S1为nulls1!=null将s2插入s1中S1=s2显示s1(即合并后的链表)结束五、

4、算法设计分析这个两个链表的交叉合并算法主要运用到的是链表的基本操作,定义节点,将链表的创建、链表的插入、链表内容升序排列,通过主函数调用。这样就大大精简了主函数的操作。但主函数中很大篇幅用到了if、else语句,用以指定链表指定结点,这样就使得本来很精简变得繁琐,降低了程序的质量。所以其有优点和缺点,但需要不断的改进,不断优化该程序。残骛楼諍锩瀨濟溆塹籟。六、数据结构:(1)数据类型DataType定义如下:typedefintelemtype;(2)带头结点链表抽象数据类型的结点结构定义如下:type

5、defstructnode{elemtypedata;structnode*next;}linklist;七、源程序:#definenull0typedefintelemtype;typedefstructnode{elemtypedata;structnode*next;}lin;voidinia(lin*a){a->next=null;}voidcreate(lin*a){lin*p,*q=a;elemtypee;printf("pleaseinputthedata;");scanf("%d",

6、&e);while(e!=-1){p=(lin*)malloc(sizeof(lin));p->data=e;q->next=p;q=q->next;scanf("%d",&e);}q->next=null;}voiddisplay(lin*a){lin*p=a->next;if(a->next==null)printf("thelinisempty!");else{printf("outputthedata:");while(p!=null){printf("%5d",p->data);p=p

7、->next;}}printf("");}voidsort(lin*a){lin*p,*q;elemtypet;p=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;}}voidadd(lin*s1,lin*s2){lin*p1=a1->next,*p2=a1,*q1=a2->next,*q2=a2;

8、if(s1==null)a1=a2;while(p1!=null&&q1!=null){if(p1->datadata){p1=p1->next;p2=p2->next}else{q2->next=q1->next;q1->next=p2->next;p2->next=q1;p2=p2->next;q1=q2->next;}}if(q1!=null)p2->next=q1;}voidmain(){lin*a1,*a2;s1=(li

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。