



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实现两个链表的合并基本功能要求:(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:(1) 用直接插入排序法对C进行升序排序,生成链表D,并输出链表D。测试数据:(1) A表(30,41,15,12,56,80)B表(23,56,78,23,12,33,79,90,55)(2) A表(30,41,15,12,56,80,23,12,34)B表(23,56,78,23,12)模块划分(1) 结构体struct Node的创建。(2) struct Node *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) main()函数主要是对算法进行测试。数据结构:数据结构定义如下:struct Node long int number; struct Node *next;源程序:#include#include#include#include#define L sizeof(struct Node)struct Node /结构体 long int number; struct Node *next;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-number); a-; /控制输入的个数 p2-next = NULL; return (head);/链表创建函数结束void print(struct Node *head)/输出函数 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, int a, struct Node * chain2, int b) int temp; struct Node *head, *p1, *p2, *pos; /*判断a,b大小并合并 */ if (a = b) head = p1 = chain1; p2 = chain2; else/*ba*/ head = p1 = chain2; p2 = chain1; temp = a, a = b, b = temp; /*交换a和b*/ /*下面把p1的每个元素插在p2相应元素之前,p1长a,p2长b*/ pos = head; /*此时pos指向p1中的第一个元素*/ while (p2 != NULL) /漂亮,蛇形插入 p1 = p1-next; pos-next = p2; pos = p2; p2 = p2-next; pos-next = p1; pos = p1; return head;/对合并好的链表进行排序void InsertSort(struct Node *p, int m)/排序函数 int i, j, t; struct Node *k; k = p; for (i = 0; i m - 1; i+) for (j = 0; j number (p-next)-number) t = p-number; p-number = (p-next)-number; (p-next)-number = t; p = p-next; p = k; /主函数int main()/main函数 struct Node *p1, *p2; int a; int b; int h; printf(请输入第一个链表:n); printf(n输入链表的长度a:n); scanf(%d, &a); printf(请输入链表数据:); p1 = create(a); printf(n你刚才输入的第一个链表信息:n ); print(p1); printf(n 请输入第二个链表:n); printf(n输入链表的长度b:n); scanf(%d, &b); printf(请输入链表数据:); p2 = create(b); printf(n你刚才输入的第二个链表的信息:n); print(p2); p1 = i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辐照保鲜技术-洞察及研究
- 医保咨询义诊活动方案
- 视觉线索与用户界面设计的创新研究-洞察及研究
- 杜子建互粉营销方案
- 图标标注一致性分析-洞察及研究
- 流动式设备布局-洞察及研究
- 油墨厂操作工培训办法
- 四川省遂宁市遂宁中学2024-2025学年九年级下学期第一次级化学月考试卷(无答案)
- 学生会竞选如何做自我介绍
- 第1-6单元古诗文默写强化训练(含答案)语文统编版七年级上册
- 全套课件-食品营养学-王莉
- htri手册HTRIExchanger使用手册
- 四年级数学上册试题 一课一练2.3《平移与平行》习题1-北师大版(含答案)
- 小学英语外研版5A Unit2 They sell many different things Module 2部优课件
- 中国文学史概述
- 9.10.11有机、酸碱一般排-盛剑
- 完整版:美制螺纹尺寸对照表(牙数、牙高、螺距、小径、中径外径、钻孔)
- 毕业设计-太平哨水利枢纽引水式水电站设计
- 陈氏太极56式拳谱
- 机电技术应用专业岗位任务分析表
- 2019法考主观题考前聚焦2小时商法曹新川案例题参考答案
评论
0/150
提交评论