class Node {
constructor(value){
this.value = value;
this.next = null;
}
}
class Queue{
constructor(){
this.first = null;
this.last = null;
this.length = 0;
}
enqueue(value){
const newNode = new Node(value)
if(this.length === 0){
this.first = newNode;
this.last = newNode;
} else {
this.last.next = newNode;
this.last = newNode;
}
this.length++;
return this;
}
}
const myQueue = new Queue();
myQueue.enqueue('a')
myQueue.enqueue('b')
Run Code Online (Sandbox Code Playgroud)
在这里,我正在使用链表实现Queue。在enqueue()方法的else 块中,我没有分配任何东西给 this.first我只分配给this.last
如果更改,我的this.first如何。
请看一看。
this.first是如何在不触及它的情况下发生变化的。
其实答案是正确的,但我无法理解其中的逻辑。
看看这两行:
this.first = newNode;
this.last = newNode;
Run Code Online (Sandbox Code Playgroud)
您的设置参考,以this.first和this.last同一个对象。基本上 this.first和this.last具有相同的内存地址。
所以,下次你打电话时:
this.last.next = newNode;
this.last = newNode;
Run Code Online (Sandbox Code Playgroud)
this.last.next修改前一个的对象引用newNode,其内存地址与this.first. 因此,当您更改this.last它时,它也会在this.first.