题解 | #合并两个排序的链表#
合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { auto vHead1 = new ListNode(1); vHead1->next = pHead1; auto vHead2 = new ListNode(1); vHead2->next = pHead2; auto nHead = new ListNode(1); ListNode* nTail = nHead; ListNode* p = NULL, *q = NULL; while (vHead1->next && vHead2->next) { p = vHead1->next; q = vHead2->next; if (p->val < q->val) { vHead1->next = p->next; p->next = NULL; nTail->next = p; nTail = p; } else { vHead2->next = q->next; q->next = NULL; nTail->next = q; nTail = q; } } if(vHead1->next)nTail->next=vHead1->next; if(vHead2->next)nTail->next=vHead2->next; return nHead->next; } };