归并两个递增序列链表为一个递减有序链表
2016-03-16 00:06
411 查看
描述:
假设有两个按元素值递增有序排列的线性表a和b,均以单链表作为存储结构,请编程实现将表a和表b归并成一个按元素值递减有序排列的线性表c(注意:非严格递减,也就是说本题中的数据有可能相等),并要求利用原表的结点空间构造c表。
输入:
第一行先输入两个小于100的正整数m,n,第二行从小到大的输入m个整数,第三行从小到大的输入n个整数。
输出:
归并这两个序列为一个递减的序列c,用链表存储,之后输出按顺序输出链表c的值,每个数占一行。
输入样例:
4 3
2 6 6 10
3 10 50
输出样例:
50
10
10
6
6
3
2
假设有两个按元素值递增有序排列的线性表a和b,均以单链表作为存储结构,请编程实现将表a和表b归并成一个按元素值递减有序排列的线性表c(注意:非严格递减,也就是说本题中的数据有可能相等),并要求利用原表的结点空间构造c表。
输入:
第一行先输入两个小于100的正整数m,n,第二行从小到大的输入m个整数,第三行从小到大的输入n个整数。
输出:
归并这两个序列为一个递减的序列c,用链表存储,之后输出按顺序输出链表c的值,每个数占一行。
输入样例:
4 3
2 6 6 10
3 10 50
输出样例:
50
10
10
6
6
3
2
#include <iostream> #include <cstdio> #include <cstdlib> #define MAXSIZE 2000 using namespace std; typedef struct node { int data; struct node *next; }LNode; void Creat_LinkList(LNode **head,int n) { LNode *p; int x; (*head) = (LNode*)malloc(sizeof(LNode)); (*head)->next = NULL; while(n--) { p = (LNode*)malloc(sizeof(LNode)); scanf("%d",&x); p->data = x; p->next = (*head)->next; (*head)->next = p; } } void Del_LinkList(LNode *head) { LNode *p; p = head -> next; head ->next = p->next; free(p); } void print(LNode *h) { LNode *p; p=h->next; while(p!=NULL) { printf("%d\n",p->data); p=p->next; } } LNode *Deal_LinkList(LNode *a,LNode *b) { LNode *p,*q,*c; c = (LNode*)malloc(sizeof(LNode)); c->next = NULL; p = c; q=p; while((a->next!=NULL)&&(b->next)!=NULL) { if((a->next)->data > (b->next)->data) { p = (LNode*)malloc(sizeof(LNode)); p->data = (a->next)->data; p->next = NULL; q->next = p; q=p; Del_LinkList(a); } else { p = (LNode*)malloc(sizeof(LNode)); p->data = (b->next)->data; p->next = NULL; q->next = p; q=p; Del_LinkList(b); } } if(b->next == NULL&&a->next!=NULL) { p->next = a -> next; a->next = NULL; } if(a->next == NULL&&b->next !=NULL) { p->next = b ->next; b->next = NULL; } return c; } int main() { int m, n; LNode *a,*b,*c; scanf("%d%d",&m,&n); Creat_LinkList(&a,m); Creat_LinkList(&b,n); c = Deal_LinkList(a,b); print(c); return 0; }
相关文章推荐
- Android SVG 矢量动画机制
- @date2016-03-16 00:05(软件工程男的日常)
- 文件操作函数
- SQL Server 2016的数据库范围内的配置详解
- InnoDB数据库死锁问题处理
- 原生JS实现平滑回到顶部组件
- 通过隐藏iframe实现无刷新上传文件操作
- Uploadify上传文件方法
- Javascript的表单验证长度
- Jquery技巧(必须掌握)
- 基于jQuery Tipso插件实现消息提示框特效
- Bootstrap每天必学之滚动监听
- javascript中arguments,callee,caller详解
- js实现内容显示并使用json传输数据
- js获取时间精确到秒(年月日)
- 神奇!js+CSS+DIV实现文字颜色渐变效果
- js纯数字逐一停止显示效果的实现代码
- 浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
- 教你用javascript实现随机标签云效果_附代码
- 盘点javascript 正则表达式中 中括号的【坑】