7-2 两个有序链表序列的合并 (20分)
目录
- 题目要求
- 代码如下
题目要求
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。
输入格式:
输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:
在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。
输入样例:
1 3 5 -1
2 4 6 8 10 -1
输出样例:
1 2 3 4 5 6 8 10
代码如下
- 第一次代码
一个数据点超时。未注意题目中S1、S2也是非降序,而采用了头插法创建链表,并且将合并与排序分开进行。这可能就是超时的原因。
#include<stdio.h>
#include<malloc.h>
typedef struct LNode{int data;struct LNode* next;
}LNode,*LinkList;
LinkList Creat_List();
void Travel(LinkList H);
LinkList Combine_List(LinkList A,LinkList B);
void Lsort(LinkList &H);
int main(){LinkList A,B,C;A = Creat_List();B = Creat_List();C = Combine_List(A,B);Lsort(C);Travel(C);return 0;
}
void Travel(LinkList H){if(H->next){LinkList p;p=H->next;while(p){printf("%d",p->data);if(p->next != NULL) printf(" ");p = p->next;}printf("\n");}else printf("NULL");
}
LinkList Creat_List(){//头插法LinkList H,p;int x;H = (LNode*)malloc(sizeof(LNode));H->next = NULL;while(scanf("%d",&x) && x!=-1){LinkList p;p = (LNode*)malloc(sizeof(LNode));p->data = x;p->next = H->next;H->next = p;}return H;
}
LinkList Combine_List(LinkList A,LinkList B){LinkList p=A;while(p->next) p=p->next;p->next = B->next;return A;
}
void Lsort(LinkList &H){LinkList p,q;if(H->next==NULL) ;else if(H->next->next==NULL) ;else{for(p = H->next; (p->next)!=NULL; p=p->next){for(q = p->next; q!=NULL; q=q->next){if(q->data<p->data){int t;t= q->data;q->data = p->data;p->data = t;}}}}}
- 第二次代码
使用尾插法创建链表,并且使用归并排序函数,完成合并与排序。
#include<stdio.h>
#include<malloc.h>typedef struct LNode{int data;struct LNode* next;
}LNode,*LinkList;LinkList Creat_List();
void Travel(LinkList H);
LinkList Combine_List(LinkList A,LinkList B);int main(){LinkList A,B,C;A = Creat_List();B = Creat_List();C = Combine_List(A,B);Travel(C);return 0;
}
void Travel(LinkList H){if(H->next){LinkList p;p=H->next;while(p){printf("%d",p->data);if(p->next != NULL) printf(" ");p = p->next;}printf("\n");}else printf("NULL");
}
LinkList Creat_List(){//尾插法LinkList H,p,q;int x;H = (LNode*)malloc(sizeof(LNode));H->next = NULL;q = H;while(scanf("%d",&x) && x!=-1){LinkList p;p = (LNode*)malloc(sizeof(LNode));p->next=NULL;p->data = x;q->next = p;q = p;}return H;
}
LinkList Combine_List(LinkList A,LinkList B){//归并排序 LinkList C,p;C= (LNode*)malloc(sizeof(LNode));C->next = NULL;p = C;A = A->next;B = B->next;while(A&&B){if(A->data > B->data){p->next = B;B = B->next;p = p->next;}else{p->next = A;A = A->next;p = p->next;}} if(A){p->next = A;}if(B){p->next = B;}return C;}
7-2 两个有序链表序列的合并 (20分)相关推荐
- 7-174 两个有序链表序列的合并 (20 分)
7-174 两个有序链表序列的合并 (20 分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降 ...
- 7-51 两个有序链表序列的合并 (20 分)(vector做法)
一 :题目 .已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不 ...
- 7-5 两个有序链表序列的合并 (20 分)
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列) ...
- 习题2.5 两个有序链表序列的合并 (15 分)
习题2.5 两个有序链表序列的合并 (15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L ...
- 7-1 两个有序链表序列的合并 (15 分)
** 7-1 两个有序链表序列的合并 (15 分) ** 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构 ...
- 7-3 两个有序链表序列的合并 (15 分)
7-3 两个有序链表序列的合并 (15 分) #include <stdio.h> #include <stdlib.h> typedef int ElementType; t ...
- 两个有序链表序列的交集 (20分)(最佳解法)
题目描述: 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列 ...
- 7-52 两个有序链表序列的交集 (20 分)(思路加详解尾插法)come Boby!
一:题目 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列) ...
- 两个有序链表序列的合并编程
7-51 两个有序链表序列的合并 (20 分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序 ...
- 6-3 两个有序链表序列的合并
6-3 两个有序链表序列的合并 (15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L2 ...
最新文章
- 如何在JSP页面中获取当前系统时间转
- android关闭触摸声音,如何在Android中以编程方式禁用触摸时的振动和声音?
- java监听器模式使用场景_常用监听器及其应用场景
- 百度牵头,全球首个面向商业化运营的Robotaxi技术标准正式发布
- Centos 的inotify和rsync文件实时同步
- 将Sublime Text3添加到右键菜单中
- 手机全部零件名称图片_【直播课】一条记录中显示多张图片
- jquery验证框架validate的使用
- Java三种连接池(druid、c3p0、dbcp)
- 正则表达式匹配第一个单个字符
- Web 前端:知道这些,至少有底气去面试了
- 51单片机——舵机的原理及应用
- UE4-蓝图-角色的移动,视角控制(五)人物走动到停下过度动画
- php经典实例读后感,读卡耐基《人性的弱点》章节之读后感
- Shell脚本之免交互操作
- php实现股票日线数据转换为周线月线,通达信引用月线数据,如何在日线里调用周线和月线函数?...
- HTML href指向function
- 记一次阿里java实习生面试(失败)
- 在for循环中运行setTimeout的三种情况
- 一个统计Word文档中行数的VBA例程