繁体   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