非递减合并两个有序单链表
2014-04-18 00:43
288 查看
#include <iostream> #include <cstdio> #include <stdlib.h>//malloc函数头文件 using namespace std; typedef struct Node { int data; struct Node * next; } LNode,*LinkList;//直接定义节点指针,这样代码指针不会出现*,简洁 LinkList built(int n) { LinkList p,r,list; list=(LinkList)malloc(sizeof(LNode)); list->next=NULL; for(int i=0; i<n; i++) { int d; scanf("%d",&d); p=(LinkList)malloc(sizeof(LNode)); p->data=d; p->next=NULL; if(list->next==NULL) list->next=p; else r->next=p; r=p; } return (list); } LinkList ListMerger(LinkList ListA,LinkList ListB)//两个链表的合并 { LinkList pa,pb,pc,ListC; ListC=(LinkList)malloc(sizeof(LNode)); pa=ListA->next; pb=ListB->next; pc=ListC; pc->next=NULL; while(pa&&pb) { if(pa->data<pb->data) { pc->next=pa; pc=pa; pa=pa->next; } else { pc->next=pb; pc=pb; pb=pb->next; } } pc->next=pa?pa:pb;//指向剩余的链表 return ListC; } int main() { int n,m; while(scanf("%d %d",&n,&m)!=EOF) { if(!n&&!m) { printf("NULL\n"); continue; } LinkList ra=built(n); LinkList rb=built(m); LinkList t=ListMerger(ra,rb); if(t->next!=NULL)t=t->next; while(t->next!=NULL) { cout<<t->data<<" "; t=t->next; } cout<<t->data<<endl; } return 0; }
相关文章推荐
- [数据结构]单链表 合并两个非递减有序表成新表也是非递减表
- 合并两个单链表为递减有序的单链表
- 合并两个单链表为递减有序的单链表
- 写程序。设ha和hb分别是两个带头结点的非递减有序单链表的头指针,试设计算法,将这两个有序链表合并成一个非递增有序的单链表。要求使用原链表空间,
- 数据结构 — 1. 两个非递减有序单链表合并为非递增有序单链表
- 基于单链表的两个非递减有序表的合并
- 合并两个有序单链表
- 【C语言版数据结构】线性表的链式表示,并且实现合并两个非递减有序排列到新的线性表
- 将两个递增有序的单链表合并成一个递减有序的单链表,利用原结点空间
- 数据结构——算法之(033)(两个有序单链表合并为一个有序的单链表)
- 基于顺序表的两个非递减有序表的合并
- 合并两个有序单链表
- 不开辟新空间,两个有序单链表合并为一个有序单链表
- 微软暑期实习笔试题 合并两个有序单链表
- 设A和B是两个单链表,其表中元素递增有序,使用一算法将A和B归并成一个案元素递减有序的单链表C(该程序中的功能包含了上几个博客中的部分功能)
- 链表面试题-合并两个有序单链表(递归和非递归)
- 两个非递减有序表的合并_Page_39
- 单链表------合并两个有序链表Ha、Hb到Hc
- 设ha和hb分别是两个带头节点的费递减有序单链表的表头指针,设计以算法,将将两个有序链表合成一个非递减的有序单链表,该程序以以前发表的博客中的链表中的区别在与该立案表带有头结点
- 合并两个有序单链表