两个有序链表序列的合并
2017-08-27 13:06
253 查看
PTA:数据结构与算法集<7-51>
输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出
上一篇线性链表的是否带头结点问题
输入格式:
输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:
在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。
输入样例:
1 3 5 -1 2 4 6 8 10 -1
输出样例:
1 2 3 4 5 6 8 10
#include<stdio.h> #include<stdlib.h> typedef struct Node{ struct Node *next; int data; 4000 }node; node *scanner(){ node *head = NULL; //不带头节点 int a; node *p; while(scanf("%d",&a)) { if(a!=-1){ node *current = (node *)malloc(sizeof(node)); current->data = a; if(!head){ head = current; } else{ p->next = current; } p = current; //记录当前节点值,便下次输入 } else{ p->next = NULL; break; } } return head; } int main(){ node *list1,*list2; // 定义两个数组 list1 = scanner(); list2 = scanner(); int flag = 0; //用于控制空格输入 while(list1&&list2){ if(list1->data>list2->data){ //小的直接输出(也可以以此建立第三条链再输出) if(flag){ printf(" "); } else{ flag = 1; } printf("%d",list2->data); list2 = list2->next; } else{ if(flag){ printf(" "); } else{ flag = 1; } printf("%d",list1->data); list1 = list1->next; } } /*list1不空*/ while(list1){ if(flag){ printf(" "); } else{ flag = 1; } printf("%d",list1->data); list1 = list1->next; } /*list2不空*/ while(list2){ if(flag){ printf(" "); } else{ flag = 1; } printf("%d",list2->data); list2 = list2->next; } if(!flag){ printf("NULL"); } return 0; }
上一篇线性链表的是否带头结点问题
相关文章推荐
- 两个有序链表序列的合并
- pat(A)2-11. 两个有序链表序列的合并
- 5-51 两个有序链表序列的合并(Java)
- 7-15 两个有序链表序列的合并(20 分)
- 02-线性结构1 两个有序链表序列的合并(15 分)
- PAT两个有序链表序列的合并
- 02-线性结构1 两个有序链表序列的合并
- Programming Ability Test学习 2-11. 两个有序链表序列的合并(15)
- 每天做死一道题——两个有序链表序列的合并
- 两个有序链表序列的合并(20 分)
- 2-11. 两个有序链表序列的合并(15) (ZJU_PAT 链表 | vector)
- [PAT] 02-线性结构1 两个有序链表序列的合并
- 5-51 两个有序链表序列的合并 (20分)
- 5-15 两个有序链表序列的合并
- PAT 两个有序链表序列的合并
- 02-线性结构1 两个有序链表序列的合并
- 数据结构 02-线性结构1 两个有序链表序列的合并
- C 02-线性结构1 两个有序链表序列的合并
- 数据结构_中国大学MOOC(慕课)——两个有序链表序列的合并问题
- PTA数据结构之两个有序链表序列的合并