剑指offer-17.合并两个有序链表

0 题目

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

1 分析

递归实现。

这种方法是改变了原有节点。

ListNode *Merge(ListNode *pHead1, ListNode *pHead2)
{
    // 如果一个链表空了,那么将另一个链表全都挂上去
    if (pHead1 == nullptr)
        return pHead2;
    if (pHead2 == nullptr)
        return pHead1;

    ListNode *res = nullptr;

    if (pHead1->val >= pHead2->val)
    {
        res = pHead2;
        // res 后面再往后挂
        res->next = Merge(pHead1, pHead2->next);
    }
    else
    {
        res = pHead1;
        res->next = Merge(pHead1->next, pHead2);
    }

    return res;
}

  

原文地址:https://www.cnblogs.com/perfy576/p/8607117.html