1 struct Link 2 {3 int data; 4 struct Link* Next; 5 }node,*pnode;
1NODE *merge (Pnode *pphead1, Pnode *pphead2)2 {3NODE *mergehead = NULL, *ptail =NULL;4Pnode pcur1 = *pphead1, PCUR2 = *pphead2;5 if(Pcur1 = =NULL)6 returnPcur2;7 Else if(PCUR2 = =NULL)8 returnPcur1;9 Ten if(Pcur1->data < pcur2->data) One { AMergehead =Pcur1; -Pcur1 = pcur1->Next; - } the Else - { -Mergehead =Pcur2; -PCUR2 = pcur2->Next; + } -Ptail =Mergehead; + while(Pcur1! = NULL && PCUR2! =NULL) A { at if(Pcur1->data < pcur2->data) - { -Ptail->next =Pcur1; -Ptail =Pcur1; -Pcur1 = pcur1->Next; - } in Else - { toPtail->next =Pcur2; +Ptail =Pcur2; -PCUR2 = pcur2->Next; the } * } $ if(Pcur1 = = NULL && PCUR2 = =NULL)Panax NotoginsengPtail->next =NULL; - if(Pcur1! =NULL) thePtail->next =Pcur1; + if(PCUR2! =NULL) APtail->next =Pcur2; the + returnMergehead; -}
Merge two ascending sorted lists