21. Merge Two Sorted Lists

来源:互联网 发布:淘宝助理不显示宝贝 编辑:程序博客网 时间:2024/05/17 04:51

题目:Merge Two Sorted Lists

原题链接:https://leetcode.com/problems/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.

将两个排序好的单链表合并成一个链表(保持元素排好序)。

每次比较两个链表的当前节点,取较小的值插入到新的链表中,当一个链表遍历结束之后直接在后面接上另外一个链表的剩余部分即可。

代码如下:

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