LinkedList 建構子與 addFirst()
建構子是拿來初始化物件用的。
當初始化 LinkedList 並產生實體(instance),這個實體會有一個屬性head
,這個 head 會指向第一個 node,預設為 null,
因為還沒有資料在新的(初始化的) LinkedList 裡面。
LinkedList 只知道 head
屬性,它並不知道裡面有多少 node,也不知道有什麼資料,他只知道第一個 node,
其他都要靠第一個 node 去做功能。
Java 本身就有 LinkedList 物件可以操作,因此我們先實作 JavaScript 的 LinkedList,後面會提供 Java 範例。
JavaScript LinkedList 實作
class LinkedList {
constructor() {
this.head = null;
}
}
addFirst()
在 head node
後面加上第一個元素,如果本來就有其他元素,其他元素會往後面排,head reference 會改變成 addFirst() 過後的。
class LinkedList {
constructor() {
this.head = null;
}
addFirst(data) {
const node = new Node(data, this.head); // this.head 往後排的意思
this.head = node; // 第一個換人當
}
}
addFirst() 可以簡寫成
addFirst(data) {
this.head = new new Node(data, this.head);
}
測試 JavaScript 我們的 LinkedList
class Node {
constructor(data, next = null) {
this.data = data;
this.next = next;
}
}
class LinkedList {
constructor() {
this.head = null;
}
addFirst(data) {
this.head = new Node(data, this.head);
}
}
const node1 = new Node("car1");
const list = new LinkedList();
list.head = node1;
list.addFirst("car2");
console.log(list);
輸出
LinkedList {
head: Node { data: 'car2', next: Node { data: 'car1', next: null } }
}
Java 內建 addFirst()
LinkedList mylist = new LinkedList();
mylist.addFirst("car1");
mylist.addFirst("car2");
mylist.addFirst("car3");
System.out.println(mylist);
輸出
[car3, car2, car1]
本文同時發布於鐵人賽