Linked List#

Linked List 是一種資料結構。

Linked List 是一種有順序的集合,裡面有許多節點(node),第一個 node 連接第二個 node,第二個 node 連結第三個 node...

節點的順序是無法改變的。每個 node 裡面都會有兩個屬性:

  1. 一個自己的資料
  2. 下個節點的參考(會指向下一個節點)

如圖所示

algo-node-img

實作 node 說明#

因 Java 本身就有 LinkedList 物件可以使用,所以本篇注重於 JavaScript 實作 Linked List。

Java LinkedList 詳細可以使用的方法請見 Oracle 官網 Java API。

我們也可以根據官網來看看 Java 裡面的 LinkedList 有哪些方法以及特性,更了解此資料結構。

JavaScript 實作 node#

期望效果

const node1 = new Node("ya");
node1.data; // 期望回傳 ya
node1.next; // 期望回傳 null
const node2 = new node("cool", node1);
node2.data; // 期望回傳 cool
node2.next; // 期望回傳 node1 也就是 ya

來實作

class Node {
constructor(data, next = null) {
this.data = data;
this.next = next;
}
}

說明,每當 Node 被呼叫,會把丟進去的第一個引數設為 data,

有第二個引數進去的話則 next 為該丟進去的引數。沒有第二個丟進去的引數預設為 null。

補充 Node 其他特性#

Linked List 有兩個特別的節點: Head node , Tail node。

  1. Head node 是第一個 node。

  2. Tail node 的特色是參考到的會是 Null(因為最後了)。

本文同時發布於鐵人賽