2022年2022年链表的合并-实验报告 .pdf
《2022年2022年链表的合并-实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年链表的合并-实验报告 .pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.1/14 课程设计报告课程设计题目:两个链表的合并专业:软件工程班级:姓名:学号:指导教师:年月日名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 14 页 -.2/14 目录1.课程设计的目的与要求2.课程设计的容分析和设计3.算法流程图4.详细步骤5.代码6.显示结果7.课程设计的总结名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 14 页 -.3/14 一课程设计的目的与要求1.目的:实现两个链表的合并2.要求:1 建立两个链表A 和 B,链表元素个数分别为m 和 n 个。2 假设元素分别为(x1,x2,xm),和(y1,y2,yn)。把它们合并成一个线形表C
2、,使得:当 m=n 时,C=x1,y1,x2,y2,xn,yn,xm 当 nm 时,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 进展直接插入排序的操作和根据用户的意愿可以对链表进展删除的操作。三算法流程图名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 14 页 -.4/14 四详细步骤(1)结构体的创建:struct Node(2)链表的创建:struct No
4、de*create链表的创建。(3)链表的输出:void print(struct Node*head)功能是对链表进展输出。(4)链表的合并:struct Node*inter_link(struct Node*chain1,int a,struct Node*chain2,int b)算法的功能是实现两个链表的交叉合并,并且可以根据两链表的长短将行不通的插入。(5)排序:void InsertSort(struct Node*p,int m)算法的功能是对一合并好的链表进展升序插入排序。(6)按位删除操作:struct Node*delete_link(struct Node*p,int
5、i)。(7)按值删除操作:struct Node*delete_linkz(struct Node*p,int i)。(8)主函数:main()函数主要是对算法进展测试。建立链表 A 建立链表B 合并 A B 链表得到 C 链表得到 D 链表得到 E 链表比拟 m.n 排序删除名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 14 页 -.5/14 五代码struct Node/数据结构定义如下:long int number;struct Node*next;Node,*linkList;#include/源程序:#include#include#include#define e
6、rror 0#define null 1#define L sizeof(struct Node)struct Node*create(int a)/链表创建函数 int n;struct Node*p1,*p2,*head;head=NULL;n=0;p2=p1=(struct Node*)malloc(L);/分配存scanf(%ld,&p1-number);while(a)/录入链表信息 n=n+1;if(n=1)head=p1;else p2-next=p1;p2=p1;p1=(struct Node*)malloc(L);if(a!=1)/分配存scanf(%ld,&p1-numbe
7、r);a-;/控制输入的个数 p2-next=NULL;return(head);/链表创建函数完毕void print(struct Node*head)/输出函数名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 14 页 -.6/14 struct Node*p;p=head;printf(数字:n);if(head!=NULL)do/循环实现输出 printf(%ld,p-number);printf();p=p-next;while(p!=NULL);printf(n);/链表的交叉合并算法struct Node*inter_link(struct Node*chain1,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年链表的合并-实验报告 2022 年链表 合并 实验 报告
限制150内