Linked List

什麼是Linked List

Single List

// Definition for ListNode.
public class ListNode {
    int val;
    ListNode next;
    ListNode(int val) {
        this.val = val;
        this.next = null;
    }
}

Double List

How to implement Linked List data structure


LinkedList Template

當在處理 Linked List 的時候,最常寫下的片段如下:

while ( head != null ) {
    // 自己的程式碼
    head = head.next;
}

這個片段就會讓程式從 Linked List 的頭節點走到最後一個節點 (null),但切記別在 head 更新成下一個節點 head.next 之前,就擅自對 head 或是 head.next 進行改變。如果一定要對 head 或是 head.next做改變,可以利用一個暫時的 Linked List 節點存下 head.next ,最後再將 head 更新成暫時的節點,程式碼如下:

while ( head != null ) {
    LinkedList temp = head.next;
    // 自己的程式碼

    head = temp;
}

這個用法我們將會在反轉 Linked List (Reverse Linked List) 題目中見到。


common mistake in Linked List

LinkedList 特殊解法 ( Dummy Node, Fast-n-Slow pointer )

Linked List 題目

results matching ""

    No results matching ""