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')
在这里,我正在使用链接列表实现队列。 在 enqueue()方法的else块中,我没有分配任何东西给 我仅将 this.first 分配给 this.last
如果更改,我的 this.first 如何。
请看看。
this.first 的变化方式甚至都没有触及。
实际上答案是正确的,但是我听不懂 逻辑。
答案 0 :(得分:3)
看看这两行:
this.first = newNode;
this.last = newNode;
您要将参考设置为this.first
,并将this.last
设置为同一对象。基本上,this.first
和this.last
具有相同的内存地址。
因此,下次您拨打电话时:
this.last.next = newNode;
this.last = newNode;
this.last.next
修改前一个newNode
的对象引用,该对象的内存地址与this.first
相同。因此,当您在this.last
中进行更改时,它也会在this.first
中进行修改。