美文网首页链表
【剑指 offer】合并两个排序的链表。

【剑指 offer】合并两个排序的链表。

作者: 邓泽军_3679 | 来源:发表于2019-04-12 21:05 被阅读0次

    1、题目描述

    输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。

    样例

    输入:1->3->5 , 2->4->5

    输出:1->2->3->4->5->5

    2、问题描述:

    3、问题关键:

    • 为了方便,建立虚拟头结点。

    4、C++代码:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* merge(ListNode* l1, ListNode* l2) {
            
            ListNode* dummy = new ListNode(1);//建立虚拟头结点。
            auto cur = dummy;
            while(l1 && l2) {
                if (l1->val <= l2->val) {
                    cur->next = l1;
                    cur = cur->next;
                    l1 = l1->next;
                }
                else {
                    cur->next = l2;
                    cur = cur->next;
                    l2 = l2->next;
                }
            }
            if (!l1) cur->next = l2;
            else cur->next = l1;
            return dummy->next;
        }  
    };
    

    相关文章

      网友评论

        本文标题:【剑指 offer】合并两个排序的链表。

        本文链接:https://www.haomeiwen.com/subject/yswhwqtx.html