完整代码
#include <iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define MAXSIZE 100
#define Status int
#define ElemType int
typedef struct LNode
{
ElemType data;
struct LNode * next;
}LNode, *LinkList;
Status InitList(LinkList &L)
{
L = new LNode;
L->next = NULL;
return 1;
}
void CreatList_R(LinkList &L, int n)
{
LinkList r, p;
L = new LNode;
L->next = NULL;
r = L;
for (int i = 0; i < n; ++i)
{
p = new LNode;
cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
}
}
void PrintList(LinkList L)
{
LinkList p = L->next;
if( p )
{
printf("当前单链表所有元素:");
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
else
{
printf("当前单链表已空!\n");
}
}
void Create(LinkList &L)
{
int n = 5;
printf("请输入链表的长度:");
scanf("%d",&n);
printf("请输入链表的数据:");
CreatList_R(L, n);
if( L->next )
{
printf("建表成功!!!\n");
}
else
{
printf("建表失败!!!\n");
}
}
void MergeList(LinkList &La, LinkList &Lb, LinkList &Lc)
{
LinkList pa = La->next;
LinkList pb = Lb->next;
LinkList pc = Lc = La;
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;
delete Lb;
}
int main()
{
LinkList La;
InitList(La);
Create(La);
PrintList(La);
cout << endl;
LinkList Lb;
InitList(Lb);
Create(Lb);
PrintList(Lb);
cout << endl;
LinkList Lc;
InitList(Lc);
MergeList(La, Lb, Lc);
cout << "合并后的链表Lc:" << endl;
PrintList(Lc);
cout << endl;
return 0;
}
运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200529145438431.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc1MjkxMg==,size_16,color_FFFFFF,t_70)