/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if (!pHead1) return pHead2; if (!pHead2) return pHead1; // 把 list1 插入到 list2 中 ListNode* i = new ListNode(0); ListNode* h = i; // 新头节点 i->next = pHead1; ListNode* temp; while (pHead2 && i->next){ // 找到下一个插入点 while (i->next && pHead2->val > i->next->val) { i = i->next; } if (!i->next) break; // 把list2的当前节点插入到该位置 temp = pHead2->next; pHead2->next = i->next; i->next = pHead2; // 新的i和pHead2 pHead2 = temp; i = i->next; } if (!i->next) i->next = pHead2; return h->next; } };