[LeetCode] Merge Two Sorted Lists

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

水题,注意 dummy node 的使用即可,在不确定头节点的情况下,应该使用 dummy node,如此可以简化程序。以本题为例,鉴于两个输入链表可能为空,我们采用 dummy 节点,使得 dummyHead->next 指向新链表的第一个节点。

以下为 AC 的代码:

/**

 * Author : Acjx

 * Email  : [email protected]

 */



/**

 * Definition for singly-linked list.

 * struct ListNode 

 * {

 *     int val;

 *     ListNode *next;

 *     ListNode(int x) : val(x), next(NULL) {}

 * };

 */



class Solution 

{

public:

    ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) 

    {

        ListNode *dummyHead = new ListNode(0);

        ListNode *cur = dummyHead;

        while (l1 != NULL && l2 != NULL)

        {

            if (l1->val < l2->val)

            {

                cur->next = l1;

                l1 = l1->next;

            }

            else

            {

                cur->next = l2;

                l2 = l2->next;

            }

            

            cur = cur->next;

        }

        

        if (l1 != NULL)

        {

            cur->next = l1;

        }

        

        if (l2 != NULL)

        {

            cur->next = l2;

        }

        

        return dummyHead->next;

    }

};

你可能感兴趣的:(LeetCode)