C++每日一练16.合并两个排序的链表
Posted 鱼酱2333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++每日一练16.合并两个排序的链表相关的知识,希望对你有一定的参考价值。
合并两个排序的链表
输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。
循环法
class Solution
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
ListNode *vhead = new ListNode(-1);
ListNode *cur = vhead;
while (pHead1 && pHead2)
if (pHead1->val <= pHead2->val)
cur->next = pHead1;
pHead1 = pHead1->next;
else
cur->next = pHead2;
pHead2 = pHead2->next;
cur = cur->next;
cur->next = pHead1 ? pHead1 : pHead2;
return vhead->next;
;
递归法
class Solution
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
if (!pHead1) return pHead2;
if (!pHead2) return pHead1;
if (pHead1->val <= pHead2->val)
pHead1->next = Merge(pHead1->next, pHead2);
return pHead1;
else
pHead2->next = Merge(pHead1, pHead2->next);
return pHead2;
;
以上是关于C++每日一练16.合并两个排序的链表的主要内容,如果未能解决你的问题,请参考以下文章
剑指Offer-16.合并两个排序的链表(C++/Java)