#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkList;
void CreateList_L(LinkList &L, int n){
int i = 0;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
for(i = n; i > 0; i--){
LinkList p = (LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
//printf(" ---%d\n",p->data);
p->next = L->next;
L->next = p;
}
}
void GetElem_L(LinkList L, int i, int e){
LinkList p = L->next;
int j = 1;
while(p && j < i){
p = p->next;
j++;
}
if(!p || j > i) exit(-1);
e = p->data;
}
void ListInsert_L(LinkList &L, int i, int e){
LinkList p = L;
int j = 0;
while(p && j < i-1){
p = p->next;
j++;
}
if(!p || j > i-1) exit(-1);
LinkList s = (LinkList)malloc(sizeof(LNode));
s->data = e;
s->next = p ->next;
p->next = s;
}
void ListDelete_L(LinkList &L, int i,int &e){
LinkList p = (LinkList)malloc(sizeof(LNode));
p = L;
int j = 0;
while(p->next && j < i-1){
p = p->next;
j++;
}
if(!p || j > i-1) exit(-1);
LinkList q = (LinkList)malloc(sizeof(LNode));
q = p->next;
p->next = q->next;
e = q->data;
free(q);
}
void MergeList_L(LinkList &La, LinkList &Lb, LinkList &Lc){
LinkList pa = (LNode*)malloc(sizeof(LNode));
pa = La->next;
LinkList pb = (LNode*)malloc(sizeof(LNode));
pb = Lb->next;
LinkList pc = (LNode*)malloc(sizeof(LNode));
Lc = pc = La;
while(pa && pb){
printf("%d %d",pa->data,pb->data);
if(pa->data <= pb->data){
printf("进入11");
pc->next = pa;
pc = pa;
pa = pa->next;
}else{
printf("进入22");
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa ? pa : pb;
free(Lb);
}
int main(){
LinkList L1;
LinkList L2;
LinkList L3;
int n = 10;
int e = 0;
CreateList_L(L1,n);
CreateList_L(L2,n);
/*while(L1 = L1->next){
printf(" %d ", L1->data);
}
CreateList_L(L2,n);
while(L2 = L2->next){
printf(" %d ", L2->data);
}*/
MergeList_L(L1, L2, L3);
//ListInsert_L(L1,5,1000);
//ListDelete_L(L1,5,e);
while(L3 = L3->next){
printf(" %d ", L3->data);
}
//printf("\n%d",e);
getchar();
getchar();
getchar();
getchar();
return 0;
}