簡體   English   中英

為什么 push 方法在這個隊列中使用 javascript 工作

[英]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,則它知道這是初始狀態,這意味着隊列中沒有元素,因此將第一個元素添加到隊列中並使firstlast指向同一個對象,因為此時只有一個:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM