List Insert(List L3,List tmp){
//按题意,使用原结点,不能new新结点List L4=L3;while(L4->Next){L4=L4->Next;}//将tmp插入List最后,将tmp->Next置空//需要注意必须提前记住tmp下一个元素,不然没法继续访问L1,L2L4->Next=tmp;tmp->Next=NULL;return L3;
}List Merge( List L1, List L2 ){List L3=(List)malloc(sizeof(struct Node));L3->Next=NULL;//注意空表头的Next必须置空,判定程序的Print函数记住了原空表头的位置
//不然空表头仍然会指向新表元素List L4=L1;List L5=L2;L1=L1->Next;L2=L2->Next;L4->Next=NULL;L5->Next=NULL;List tmp,tmp1;while(L1 && L2){if(L1->DataData){tmp=L1;L1=L1->Next;L3=Insert(L3,tmp);}else if(L1->Data>L2->Data){tmp=L2;L2=L2->Next;L3=Insert(L3,tmp);}else{tmp=L1;tmp1=L2;L1=L1->Next;L2=L2->Next;L3=Insert(L3,tmp);L3=Insert(L3,tmp1);}}while(L1){tmp=L1;L1=L1->Next;L3=Insert(L3,tmp);}while(L2){tmp=L2;L2=L2->Next;L3=Insert(L3,tmp);}return L3;
}