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 列表中。
//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 列表中。