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)

剑指 Offer 25. 合并两个排序的链表(leetcode每日打卡)

16.合并两个排序的链表

剑指offer 16.合并两个排序的链表

16.合并两个排序的链表

剑指offer(16)合并两个排序的链表