#include<stdio.h>
#include<stdlib.h>
struct LNode{
int data;
LNode* next;
};
typedef LNode* LinkedList;
void ListCreate(LinkedList &list,int length){
LNode* p = list;
p->next = NULL;
for(int i = 0 ; i < length; i ++){
LNode* newNode = (LNode*)malloc(sizeof(LNode));
scanf("%d",&newNode->data);
newNode->next = NULL;
p->next = newNode;
p = p->next;
}
}
void MergeList(LinkedList &la,LinkedList &lb,LinkedList &lc){
LNode* pa;LNode *pb;LNode *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 if(pa->data == pb->data){
pc->next = pa;
pc = pa;
pa = pa->next;
LNode* tmp = pb;
pb = pb->next;
free(tmp);
}else{
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa ? pa : pb;
free(lb);
}
void ListPrint(LinkedList &list){
LNode* p = list->next;
while(p){
printf("%d ",p->data);
p = p->next;
}
printf("\n");
}
int main(){
LinkedList linklistA = (LinkedList)malloc(sizeof(LNode));
LinkedList linklistB = (LinkedList)malloc(sizeof(LNode));
LinkedList linklistC;
int lenA,lenB;
printf("Input LinkedListA's length:\n");
scanf("%d",&lenA);
ListCreate(linklistA,lenA);
printf("Input LinkedListB's length:\n");
scanf("%d",&lenB);
ListCreate(linklistB,lenB);
MergeList(linklistA,linklistB,linklistC);
ListPrint(linklistC);
return 0;
}