2

分享

21. Merge Two Sorted Lists (C++)

21. Merge Two Sorted Lists合併兩個排序列表、LeetCode、鏈結串列(Linked List)
  • 鏈結串列(Linked List)、問號條件判斷?
【筆記】

鏈結串列(Linked List)

Linked List形式
  

節點1 -> 節點2 -> 節點3  -> NULL(最後節點為NULL)

筆記 leetcode c語言

Linked List形式

串列定義
// Definition for singly-linked list.
  

struct ListNode {

        int val;

        ListNode *next;

        ListNode() : val(0), next(nullptr) {}

        ListNode(int x) : val(x), next(nullptr) {}

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

};

建立第一個節點
  

ListNode* 鏈結串列名稱 = new ListNode(值);

指向下一個節點(struct ListNode中定義的next)
  

鏈結串列名稱 -> next

取值(struct ListNode中定義的val)
  

鏈結串列名稱 -> val

刪除節點(第一個節點)
  

ListNode *temp = 鏈結串列名稱;             //先把該串列第一個值存起來

鏈結串列名稱 = 鏈結串列名稱 -> next;   //把串列指向下一個節點

delete temp;                                                //把temp刪掉

問號條件判斷?

A ?  a1 : a2
  

A為True,則回傳a1

A為False,則回傳a2

題目:合併兩個排序列表,由小排到大,該列表應將兩個列表的節點拼接在一起。
例如:
  

l1 = [1,2,4]

l2 = [1,3,4]

l1+l2=[1,1,2,3,4,4]

Code

  • l1 = [1,2,4]
  • l2 = [1,3,4]
  

class Solution {

public:

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

        ListNode *Answer = new ListNode(-1);

        ListNode *current = Answer;

        while(l1 && l2){

            // cout<<"l1 = "<<l1->val<<endl;

            // cout<<"l2 = "<<l2->val<<endl;

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

                current -> next = l1;

                l1 = l1 -> next;

            }

            else{

                current -> next = l2;

                l2 = l2 -> next;

            }

            current = current->next;

        }

        current->next = l2 ? l2 : l1;

        ListNode *temp = Answer; //先把Answer值存起來

        Answer = Answer -> next; //把Answer指向下一個節點

        delete temp; //把temp刪掉

        return Answer;

    }

};


參考資料

[1]. Merge Two Sorted Lists - LeetCode
[2]. Linked List: 新增資料、刪除資料、反轉 (alrightchiu.github.io)
[3]. [C/C++] 鏈結串列(Linked List) (wordpress.com)
[4]. [C++] 問號?冒號:條件判斷 @ nini的部落格 :: 痞客邦 :: (pixnet.net)
[5]. [LeetCode] 21. Merge Two Sorted Lists 混合插入有序链表 - Grandyang - 博客园 (cnblogs.com)
#筆記  #leetcode  #c語言 
分類:學習

【關鍵字】:新手教學、Leetcode ; 【分類】:學習、理財。(目前C++新手教學第二章內容已完結)。建議或意見可私訊:https://reurl.cc/ze7L9k。文章有錯誤的地方還請留言指正,謝謝各位

評論
上一篇
  • 絕對路徑、相對路徑的練習(C++)
  • 下一篇
  • 26. Remove Duplicates from Sorted Array (C++)
  • 更多文章
    載入中... 沒有更多了