归并两个递增序列链表为一个递减有序链表
来源:互联网 发布:郑州办公软件培训 编辑:程序博客网 时间:2024/06/06 12:27
描述:
假设有两个按元素值递增有序排列的线性表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 2000using 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;}
0 0
- 归并两个递增序列链表为一个递减有序链表
- 归并两个递增序列链表为一个递减有序链表
- 将两个非递减的有序链表合并为一个非递增的有序链表
- 归并两个带头结点的递增单链表 结果为递减链表
- 将两个非递减的有序链表合并为一个非递增的有序链表(C语言编程实现)
- 两个递增有序链表合并为一个链表
- 将两个递增的有序链表合并为一个递增的有序链表
- 数据结构之将两个递增的有序链表合并为一个递增的有序链表
- 将两个递增的有序链表合并为一个递增的有序链表(C语言编程实现)
- C/C++学习(八)两个有序链表归并为一个有序链表
- 假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递减 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和
- 将两个有序递增的链表合成一个有序递增的链表
- 写程序。设ha和hb分别是两个带头结点的非递减有序单链表的头指针,试设计算法,将这两个有序链表合并成一个非递增有序的单链表。要求使用原链表空间,
- 归并两个有序链表
- 将两个线性链表归并为一个有序链表
- 合并两个递增链表为一个递增链表
- 将一个递增和递减的有序链表,用原空间合并成递增有序的链表-O(n)复杂度
- 【链表】merge两个非递减的链表为一个非递减的链表
- 类型延拓符的应用
- 顺序表的比较和删除
- hdfs file md5 计算,实现本地与hdfs同步文件
- 文件操作函数
- @date2016-03-16 00:05(软件工程男的日常)
- 归并两个递增序列链表为一个递减有序链表
- java 反转二叉树算法
- 开始吧
- 链表元素的比较和删除
- 第一篇
- SQLyog_Enterprise的简单使用
- Java集合类总结
- java “数石子”游戏算法
- 稀疏矩阵的转置