【发布时间】:2019-11-08 19:17:54
【问题描述】:
问题是我不明白为什么这段代码有效。它可以工作,但我就是无法想象它。这是一个从单链表中删除节点的函数。我觉得它不应该起作用,因为它实际上并没有改变列表中的任何元素,我只是改变了我设置的变量的值等于列表中的某个值。换句话说,当我创建一个“runner”变量来遍历列表时,为什么我对“runner”所做的更改实际上会改变列表本身。类似地,如果我这样做了
var x = 1
var y = x
y = 2
显然,x 仍将等于 1。为什么我的链表“跑步者”不一样。在下面的 deleteNode 函数中,为什么更改 runner.next 值实际上会更改函数外部存在的节点或列表中的任何内容?
function deleteNode(head, position) {
var runner = head
var counter = 0
while (runner) {
if (counter == position - 1) {
runner.next = runner.next.next
return head;
}
runner = runner.next
counter++
}
}
【问题讨论】:
标签: javascript linked-list singly-linked-list