【剣指offer】2つのソートされたチェーンテーブルをマージします.

1038 ワード

1、テーマの説明
2つの増分ソートされたチェーンテーブルを入力し、2つのチェーンテーブルを結合し、新しいチェーンテーブルのノードを増分ソートします.
サンプル
入力: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;
        }  
    };