#include <stdlib.h>
#include <stdio.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
typedef struct LNode {
ElemType data;
struct LNode *next;
} LNode, *LinkList;
Status CreateList_L(LinkList &L) {
L = (LinkList) malloc(sizeof(LNode));
if (!L) return ERROR;
L->next = NULL;
LinkList r = L;
int input;
while (1) {
scanf("%d", &input);
if (input == -1) break;
LinkList p = (LinkList)malloc(sizeof(LNode));
if (!p) return ERROR;
p->data = input;
r->next = p;
r = p;
}
r->next = NULL;
return OK;
}
void MergeList_L(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);
} //MergeList_list
Status ListTraverse(LinkList L) {
LinkList p = L->next;
while (p) {
printf("%d ", p->data);
p = p->next;
}
return OK;
}
int main() {
LinkList La, Lb, Lc;
CreateList_L(La);
CreateList_L(Lb);
MergeList_L(La, Lb, Lc);
ListTraverse(Lc);
return 0;
}