JavaScript 队列植入

JavaScript Queue Implantation

//create a Node class that will represent elements/nodes in the Queue
class Node {
  constructor(value) {
    this.value = value;
    this.next = null;
  }
}
//creates a Queue class to store the elements/nodes of the Queue
class Queue {
  constructor() {
    this.first = null;
    this.last = null;
    this.size = 0;
  }
  //enqueues a node
  enqueue(val) {
    let node = new Node(val);
    if (this.size === 0) {
      this.first = node;
      this.last = node;
    } else {
      this.last.next = node;
      this.last = node;
    }
    return this.size++;
  }
  //dequeues a node 
  dequeue() {
    if (!this.first) {
      return null;
    }
    let temp = this.first;
    if (this.first === this.last) {
      this.last = null;
    }
    this.first = this.first.next;
    this.size--;
    return temp.value;
  }
}

我正在关注一篇关于如何使用 JavaScript 实现堆栈和队列的媒体文章。 当谈到队列特别是作者实现排队的方式时,我迷路了。在方法“enqueue”的最后几位,他写道

{
   this.last.next = node;
   this.last = node;
}

这个实现不会覆盖之前的项目吗?我错过了什么?

this.last.next会变成null,最后一项后面什么都没有。

this.last.next = node; 从当前最后一个节点创建一个 link 到新项,然后 this.last = node; 将当前最后一个节点设置为刚刚插入的节点。不过,之前的最后一个节点仍在 linked 列表中。