iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
Software Development

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

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

  • 分享至 

  • xImage
  •  

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
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言