题目

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

思路

没什么思路

代码

/*
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 && !pHead2)
    {
        return nullptr;
    }
    else if (!pHead1 && pHead2)
    {
        return pHead2;
    }
    else if (!pHead2 && pHead1)
    {
        return pHead1;
    }
    else
    {
        ListNode *head;
        if (pHead1->val >= pHead2->val)
        {
            head = pHead2;
            pHead2 = pHead2->next;
        }
        else
        {
            head = pHead1;
            pHead1 = pHead1->next;
        }
        ListNode *list = head;
        while (pHead1 != NULL || pHead2 != NULL)
        {
            if (pHead1 == NULL)
            {
                list->next = pHead2;
                pHead2 = pHead2->next;
                list = list->next;
            }
            else if (pHead2 == NULL)
            {
                list->next = pHead1;
                pHead1 = pHead1->next;
                list = list->next;
            }
            else
            {
                if (pHead1->val <= pHead2->val)
                {
                    list->next = pHead1;
                    pHead1 = pHead1->next;
                    list = list->next;
                }
                else
                {
                    list->next = pHead2;
                    pHead2 = pHead2->next;
                    list = list->next;
                }
            }
        }
        return head;
    }
    }
};