/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { ListNode* newlist=new ListNode(0); ListNode* cur=newlist; ListNode* p1=pHead1; ListNode* p2=pHead2; while((p1!=NULL)&&(p2!=NULL)) { if((p1->val)<=(p2->val)) { cur->next=p1; cur=cur->next; p1=p1->next; } else { cur->next=p2; cur=cur->next; p2=p2->next; } } if(p1!=NULL) { cur->next=p1; } if(p2!=NULL) { cur->next=p2; } return newlist->next; } };