欢迎来到天天文库
浏览记录
ID:47916620
大小:916.95 KB
页数:13页
时间:2019-10-28
《实现两个链表地合并(大数据结构课程设计c语言版)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用课程设计报告课程设计题目:实现两个链表的合并文档实用学生姓名专业班级指导教师2012年06月21日一、课程设计目的:课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。二、课程设计题目:实现两个链表的合并要求:1)输入2个单链表2)输出2个单链表合并后形成的结果。文档实用三、模块划分:(1)数据模块参考使用课本上的具有头结点的链表抽象数据类型linklist,该抽象数据类型中包含一个elemtyp
2、e类型的数据和一个指针,在开始用时,elemtype定义为整型变量,指针用来指向下一个元素。对应的使用链表抽象数据类型linklist基本操作的函数有:初始化操作函数voidini(linklist*s)。(2)创建链表模块voidcreate(linklist*s)其功能是创建链表录入数据。(3)输出数据模块voiddisplay(linklist*s)其功能为是输出s链表中的各项元素,从而验证操作是否成功(4)排序模块voidsort(linklist*s)此函数功能是s链表使用冒泡法对链表进行排序(5)
3、合并链表模块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)带头结点链表抽象数据类型的结点结构定义如下:typedefstructnode{文档实用elemtypedata;structnode*next;
5、}linklist;七、源程序:#definenull0typedefintelemtype;typedefstructnode{elemtypedata;structnode*next;}linklist;voidini(linklist*s){s->next=null;}文档实用voidcreate(linklist*s){linklist*p,*q=s;elemtypee;printf("pleaseinputthedata;");scanf("%d",&e);while(e!=-1){p=(lin
6、klist*)malloc(sizeof(linklist));p->data=e;q->next=p;q=q->next;scanf("%d",&e);}q->next=null;}voiddisplay(linklist*s){linklist*p=s->next;if(s->next==null)printf("thelinklistisempty!");文档实用else{printf("outputthedata:");while(p!=null){printf("%5d",p->data);
7、p=p->next;}}printf("");}voidsort(linklist*s){linklist*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(linklist*s1,linklist*s2){linklist*p1=s1->nex
8、t,*p2=s1,*q1=s2->next,*q2=s2;if(s1==null)s1=s2;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;}
此文档下载收益归作者所有