题目描述
已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC且LC中的数据元素仍按值非递减有序列排列。
输入
输入数据共4行:
第1行:LA的数据元素的数目
第2行:LA中的各数据元素,以空格间隔
第3行:LB的数据元素的数目
第4行:LB中的各数据元素,以空格间隔
输出
依次输出LC中各数据元素的值。
样例输入 复制
4
1 2 6 7
3
1 3 5
样例输出 复制
1 1 2 3 5 6 7
#include "stdio.h"
#include "stdlib.h"
typedef int ElemType;
typedef struct Node {
ElemType data;
struct Node *next;
} LNode,*linkList;
void initList(linkList &L);
void inputList(linkList L);
void printList(linkList L);
void mergeList(linkList LA,linkList LB,linkList LC);
int main(void) {
linkList LA,LB,LC;
initList(LA);
inputList(LA);
initList(LB);
inputList(LB);
initList(LC);
mergeList(LA,LB,LC);
printList(LC);
return 0;
}
void initList(linkList &L) {
L=new LNode;
L->next=NULL;
}
void inputList(linkList L) {//尾插入法建立链表
int n;
linkList p,tail;
tail=L;
scanf("%d",&n);
for(int i=0; i<n; i++) {
p=new LNode;
scanf("%d",&p->data);
p->next=NULL;
tail->next=p;
tail=p;
}
}
void printList(linkList L) {
linkList p=L->next;
while(p!=NULL) {
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; pc=LC;
while(________________){
if(__________________){
}
else{
}
}
pc->next=pa!=NULL?pa:pb;
delete LA;
delete LB;
}