我正在创建一个函数来删除给定列表的最后一个节点(作为参数输入)。该函数本身非常简单,如下所示。
function popBack(list) {
var current = list.head,
previous;
while (current.next) {
previous = current;
current = current.next;
}
// console.log(current);
// console.log(previous.next);
// current = null;
// console.log(current);
// console.log(previous.next);
previous.next = null;
return list;
}
由于列表中的下一个节点被前一个节点引用,因此 previous.next 和 current 应该指向同一个对象。这引出了我的问题。如果我将 current
设置为 null
,那么 previous.next
是否也等于 null
?情况似乎并非如此,因为 previous.next
仍然引用 current
曾经的内容。谁能解释一下为什么会发生这种情况?
提前致谢。
最佳答案
您是对的,previous.next
和 current
指向同一个对象。我们将该对象称为O
。也就是说,
previous.next
指向O
。当前
指向O
。
当您运行以下代码时,
current = null;
它不会将 O
设置为 null,它只会更改 current
指向的内容。也就是说,运行 current = null;
后,这是新状态:
previous.next
指向O
。current
指向null
。
关于javascript - 链表 - 删除最后一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35690180/