链表的合并实验报告.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《链表的合并实验报告.doc》由会员分享,可在线阅读,更多相关《链表的合并实验报告.doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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,xn,yn,xm 当nm时,C=y1,x1,y2,x2,ym,xm,yn 输出线形表C (
2、3) 用直接插入排序法对C进行升序排序,生成链表D,并输出链表D。 (4) 能删除指定单链表中指定位子和指定值的元素。二课程设计的内容(分析和设计)1.分析由题目的相关信息可以分析得:首先我们需要建立两个链表AB,A链表的元素个数为m,B链表的元素个数为n;在将A、B链表进行合并,根据m和n的大小关系决定链表C的元素顺序;再将C进行直接插入排序得到一个新的链表D;没次输入完一次链表信息,程序都会对相应的链表进行输入操作以此确保程序输入的数据是你想要输入的数据。同时当你合并好和排序好后都会进行输出操作。最后当排序好后你可以指定你所要删除数据的位置来删除你所要删除的数据。2.设计本次课程设计所需要
3、用到的是关于链表的建立、合并以及直接插入排序的排序算法。需要先建立两个链表,再将其合并为一个无序链表,最后对这个无序链表进行直接插入排序并将其输出。难点在于将AB合并为链表C的操作以及对链表C进行直接插入排序的操作和根据用户的意愿可以对链表进行删除的操作。三算法流程图建立链表A建立链表B合并A B链表得到C链表得到D链表得到E链表比较m.n排序删除四详细步骤(1) 结构体的创建:struct Node(2) 链表的创建:struct Node *create()链表的创建。(3) 链表的输出:void print(struct Node *head)功能是对链表进行输出。(4) 链表的合并:s
4、truct 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 i)。(7) 按值删除操作:struct Node * delete_linkz(struct Node *p,in
5、t i)。(8) 主函数:main()函数主要是对算法进行测试。五代码struct Node /数据结构定义如下: long int number; struct Node *next;Node,*linkList;#include /源程序:#include#include#include#define error 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 = p
6、1 = (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-number); a-; /控制输入的个数 p2-next = NULL; return (head);/链表创建函数结束void print(struct Node *head)/输出函数 s
7、truct 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, int a, struct Node * chain2, int b) int temp; struct Node *head, *p1, *p2, *pos; /*判断a,b大小并合并 */ if (
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 合并 实验 试验 报告 讲演 呈文
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内