链表的合并实验报告

链表的合并实验报告

ID:47566029

大小:362.00 KB

页数:14页

时间:2019-09-19

链表的合并实验报告_第1页
链表的合并实验报告_第2页
链表的合并实验报告_第3页
链表的合并实验报告_第4页
链表的合并实验报告_第5页
资源描述:

《链表的合并实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、....课程设计报告课程设计题目:两个链表的合并专业:软件工程班级:姓名:学号:指导教师:年月日整理....目录1.课程设计的目的及要求2.课程设计的内容(分析和设计)3.算法流程图4.详细步骤5.代码6.显示结果7.课程设计的总结整理....一.课程设计的目的及要求1.目的:实现两个链表的合并2.要求:(1)建立两个链表A和B,链表元素个数分别为m和n个。(2)假设元素分别为(x1,x2,…xm),和(y1,y2, …yn)。把它们合并成一个线形表C,使得:当m>=n时,C=x1,y1,x2,y2

2、,…xn,yn,…,xm当n>m时,C=y1,x1,y2,x2,…ym,xm,…,yn输出线形表C(3)用直接插入排序法对C进行升序排序,生成链表D,并输出链表D。(4)能删除指定单链表中指定位子和指定值的元素。二.课程设计的内容(分析和设计)1..分析由题目的相关信息可以分析得:首先我们需要建立两个链表AB,A链表的元素个数为m,B链表的元素个数为n;在将A、B链表进行合并,根据m和n的大小关系决定链表C的元素顺序;再将C进行直接插入排序得到一个新的链表D;没次输入完一次链表信息,程序都会对相应的

3、链表进行输入操作以此确保程序输入的数据是你想要输入的数据。同时当你合并好和排序好后都会进行输出操作。最后当排序好后你可以指定你所要删除数据的位置来删除你所要删除的数据。2.设计本次课程设计所需要用到的是关于链表的建立、合并以及直接插入排序的排序算法。需要先建立两个链表,再将其合并为一个无序链表,最后对这个无序链表进行直接插入排序并将其输出。难点在于将AB合并为链表C的操作以及对链表C进行直接插入排序的操作和根据用户的意愿可以对链表进行删除的操作。三.算法流程图整理....建立链表A建立链表B合并AB

4、链表得到C链表得到D链表得到E链表比较m.n排序删除四.详细步骤(1)结构体的创建:structNode(2)链表的创建:structNode*create()链表的创建。(3)链表的输出:voidprint(structNode*head)功能是对链表进行输出。(4)链表的合并:structNode*inter_link(structNode*chain1,inta,structNode*chain2,intb)算法的功能是实现两个链表的交叉合并,并且可以根据两链表的长短将行不通的插入。(5)排序

5、:voidInsertSort(structNode*p,intm)算法的功能是对一合并好的链表进行升序插入排序。(6)按位删除操作:structNode*delete_link(structNode*p,inti)。(7)按值删除操作:structNode*delete_linkz(structNode*p,inti)。(8)主函数:main()函数主要是对算法进行测试。整理....五.代码structNode//数据结构定义如下:{longintnumber;structNode*next;}N

6、ode,*linkList;#include//源程序:#include#include#include#defineerror0#definenull1#defineLsizeof(structNode)structNode*create(inta)//链表创建函数{intn;structNode*p1,*p2,*head;head=NULL;n=0;p2=p1=(structNode*)malloc(L);//分配内存s

7、canf("%ld",&p1->number);while(a)//录入链表信息{n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(structNode*)malloc(L);if(a!=1)//分配内存scanf("%ld",&p1->number);a--;//控制输入的个数}p2->next=NULL;return(head);}//链表创建函数结束voidprint(structNode*head)//输出函数{structNode*p;整理..

8、..p=head;printf("数字:");if(head!=NULL)do//循环实现输出{printf("%ld",p->number);printf("");p=p->next;}while(p!=NULL);printf("");}//链表的交叉合并算法structNode*inter_link(structNode*chain1,inta,structNode*chain2,intb){inttemp;structNode*head,*p1,*p2

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

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

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