listnode* Merge1 (listnode* pHead1, listnode*pHead2) { if(PHead1 = =NULL)returnpHead2; Else if(PHead2 = =NULL)returnPHead1; ListNode* Pmergedhead =NULL; if(Phead1->m_nvalue < phead2->m_nvalue) {Pmergedhead=PHead1; Pmergedhead->m_pnext = Merge1 (phead1->M_pnext, pHead2); } Else{Pmergedhead=pHead2; Pmergedhead->m_pnext = Merge1 (PHead1, phead2->m_pnext); } returnPmergedhead;}
listnode* Merge (listnode* pHead1, listnode*pHead2) { if(PHead1 = =NULL)returnpHead2; if(PHead2 = =NULL)returnPHead1; ListNode* newhead=NULL; ListNode* temp=NULL; ListNode* PNode1 =PHead1; ListNode* PNode2 =pHead2; while(Pnode1!=null && pnode2!=NULL) { if(newhead==NULL) { if(Pnode1->val <= pnode2->val) {Newhead=PNode1; PNode1= pnode1->Next; } Else{Newhead=PNode2; PNode2= pnode2->Next; } temp=Newhead; } Else { if(Pnode1->val <= pnode2->val) {Temp->next=PNode1; PNode1=pnode1->Next; //temp->next=null;Temp=temp->Next; } Else{Temp->next=PNode2; PNode2=pnode2->Next; //temp->next=null;Temp=temp->Next; } } } if(Pnode1==null && pnode2!=NULL) Temp->next=PNode2; Else if(Pnode2==null && pnode1!=NULL) Temp->next=PNode1; returnNewhead; }
Sort two sorted list----recursive non-recursive implementation