iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 16
0
Software Development

One Punch 一拳搞定前後端面試系列 第 16

[One Punch 一拳搞定前後端面試] DAY-16 - LinkedList 建構子與 addFirst

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 LinledList 物件內建 addFirst()

LinkedList mylist = new LinkedList();
		
mylist.addFirst("car1");
mylist.addFirst("car2");
mylist.addFirst("car3");
		
System.out.println(mylist);

輸出

[car3, car2, car1]

本文同時發布於好讀整理版


上一篇
[One Punch 一拳搞定前後端面試] DAY-15 - LinkedList
下一篇
[One Punch 一拳搞定前後端面試] DAY-17 - LinkedList size() 與 getFirst()
系列文
One Punch 一拳搞定前後端面試30

尚未有邦友留言

立即登入留言