15、合并两个排序的链表

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daaikuaichuan/article/details/84898936

题目描述:

  输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
在这里插入图片描述

解题思路:

1. 定义一个指向新链表的指针,暂且让它指向NULL;

2. 比较两个链表的头结点,让较小的头结点作为新链表的头结点;

3. 新链表的头结点的下一个结点是原来较小的结点的下一个结点和原来较大结点所在的链表产生的最小结点【很显然有递归的模式】。

在这里插入图片描述

Demo:

class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
    {
        if (pHead1 == nullptr)
            return pHead2;
        else if (pHead2 == nullptr)
            return pHead1;
        ListNode* newHead = nullptr;
        if (pHead1->val < pHead2->val){
            newHead = pHead1;
            newHead->next = Merge(pHead1->next, pHead2);
        }
        else{
            newHead = pHead2;
            newHead->next = Merge(pHead2->next, pHead1);
        }
        return newHead;
    }
};

猜你喜欢

转载自blog.csdn.net/daaikuaichuan/article/details/84898936