美文网首页
合并两个排序的链表

合并两个排序的链表

作者: su945 | 来源:发表于2020-05-02 15:08 被阅读0次

    题目描述

    输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

    问题分析

    • 递归版
    • 非递归版

    解题思路1

    • 递归版
    /*
    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 == nullptr)
            {
                return pHead2;
            }
            if (pHead2 == nullptr)
            {
                return pHead1;
            }
            ListNode* mergeList = nullptr;
            if (pHead1->val < pHead2->val)
            {
                mergeList = pHead1;
                mergeList->next = Merge(pHead1->next,pHead2);
            }
            else
            {
                mergeList = pHead2;
                mergeList->next = Merge(pHead1, pHead2->next);
            }
            return mergeList;
    
        }
    };
    

    解题思路2

    • 非递归版
    class Solution {
    public:
        ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
        {
            //边界判断
            if(pHead1 == NULL)
                return pHead2;
            else if(pHead2 == NULL)
                return pHead1;
            //创建头尾指针
            ListNode* pMergeTail = new ListNode(0);
            ListNode* pMergeHead = new ListNode(0);
            //尾指针赋值
            pMergeTail = pMergeHead;
            //循环开始
            while(pHead1 && pHead2){
                if(pHead1->val < pHead2->val){
                    pMergeTail->next = pHead1;
                    pHead1 = pHead1->next;
                }
                else{
                    pMergeTail->next = pHead2;
                    pHead2 = pHead2->next;
                    }
                pMergeTail = pMergeTail->next;
            }
            //剩下的链表部分直接添加
            pMergeTail->next = pHead1 ? pHead1 : pHead2;
            return pMergeHead->next;
        }
    };
    

    相关文章

      网友评论

          本文标题:合并两个排序的链表

          本文链接:https://www.haomeiwen.com/subject/uzukghtx.html