链接列表 - 删除最后一个节点

时间:2016-02-29 00:36:40

标签: javascript linked-list

我正在创建一个函数来删除给定列表的最后一个节点(作为参数输入)。函数本身非常简单,如下所示。

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过去的内容。任何人都可以解释为什么会这样吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

你是对的,previous.nextcurrent指向同一个对象。让我们调用该对象O。也就是说,

  • previous.next指向O
  • current指向O

运行以下代码时,

current = null;

它没有将O设置为null,它只会更改current指向的内容。也就是说,在运行current = null;之后,这是新状态:

  • previous.next指向O
  • current指向null