//实验题目:合并顺序表
#include<stdio.h>
#include<malloc.h>
#define ERROR 0
#define OK 1
#define ElemType int
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
void CreateLink_L(LinkList &L,int n)
{ int e;
LinkList p,q;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
q=(LinkList)malloc(sizeof(LNode));
q=L;
for(int i=1;i<n+1;i++)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&e);
p->data=e;
p->next=q->next;
q->next=p;
q=q->next;
}
}
void LoadLink_L(LinkList &L)
{
LinkList p=L->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc)
{
LinkList pa,pb,pc;
pa=La->next;
pb=Lb->next;
Lc=pc=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;
free(Lb);
}
int main()
{
LinkList La,Lb,Lc;
int n;
scanf("%d",&n);
CreateLink_L(La,n);
printf("List A:");
LoadLink_L(La);
scanf("%d",&n);
CreateLink_L(Lb,n);
printf("List B:");
LoadLink_L(Lb);
MergeList(La,Lb,Lc);
printf("List C:");
LoadLink_L(Lc);
}
输入
第一行:顺序表A的元素个数 第二行:顺序表A的各元素(非递减),用空格分开 第三行:顺序表B的元素个数 第四行:顺序表B的各元素(非递减),用空格分开
输出 第一行:顺序表A的元素列表
第二行:顺序表B的元素列表
第三行:合并后顺序表C的元素列表
第一行:顺序表A的元素列表第二行:顺序表B的元素列表第三行:合并后顺序表C的元素列表