Leetcode -- 21. Merge Two Sorted Lists

来源:互联网 发布:湖北旅游 知乎 编辑:程序博客网 时间:2024/06/15 10:04

题目: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.

思路:
本题考查基础的链表操作。因为两个链表l1和l2已经有序,所以只需要按顺序比较即可,把较小的结点插入到新的链表中。注意链表为空和最后比较到链表尾的情况。当比较到链表尾部时,只需要把另一个链表剩下的部分直接插入到新链表即可。

C++代码如下:

ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {    if (l1 == NULL)        return l2;    if (l2 == NULL)        return l1;    ListNode* head = NULL;    if (l1->val < l2->val)    {        head = l1;        l1 = l1->next;    }    else    {        head = l2;        l2 = l2->next;    }    ListNode* p = head;    while (l1 != NULL && l2 != NULL)    {        if (l1->val < l2->val)        {            p->next = l1;            l1 = l1->next;        }        else        {            p->next = l2;            l2 = l2->next;        }        p = p->next;    }    if (l1 != NULL)        p->next = l1;    if (l2 != NULL)        p->next = l2;    return head;}
0 0
原创粉丝点击