[英]why the push method works in this Queue using javascrip
有人可以解釋一下 push(val) 方法是如何工作的嗎? 我無法理解邏輯。 我不知道這是如何工作的,為什么會這樣。
class Node {
constructor(val) {
this.val = val;
this.next = null;
}
};
class Queue {
constructor() {
this.first = null;
this.last = null;
this.length = 0;
}
push(val) {
const temp = new Node(val)
if(this.last === null) {
this.first = temp
this.last = temp
} else {
this.last.next = temp
this.last = temp
}
this.length++;
console.log(this)
}
}
const queue = new Queue();
queue.push('Joy');
queue.push('Matt');
queue.push('Pavel');
這是一個鏈表:
因此,最初,第一個(圖像中的頭部)和最后一個元素為空:
this.first = null;
this.last = null;
this.length = 0;
此時,兩者都指向 null。
如果添加一個新元素,並且如果last
為 null,則它知道這是初始狀態,這意味着隊列中沒有元素,因此將第一個元素添加到隊列中並使first
和last
指向同一個對象,因為此時只有一個:
if(this.last === null) {
this.first = temp
this.last = temp
}
如果添加另一個元素,首先檢查隊列中是否有任何元素(通過檢查last
的有效性),如果有,則通過以下方式將其添加到隊列末尾:
else {
this.last.next = temp
this.last = temp
}
為了進一步解釋它,它執行以下操作:
this.last
指向隊列的最后一個元素(在添加新元素之前),因此更新其next
屬性以指向新元素。this.last
以指向新添加的最后一個元素。next
指針指向null
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.