/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ #include <list> class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1==nullptr) return pHead2; if(pHead2==nullptr) return pHead1; if(pHead1->val<pHead2->val) { pHead1->next=Merge(pHead1->next,pHead2); return pHead1; } else{ pHead2->next=Merge(pHead2->next,pHead1); return pHead2; } }; };
首先判断特殊情况,某一个为空链表的情况,当然这包括了两者均为空链表的情况。
当phead1的结点值小于phead2的结点值时,将phead1作为新生成链表的头结点,合并phead1剩余链表部分和phead2。
当phead2的结点值小于phead1的结点值时同理。