javascript - 链表 - 删除最后一个节点

标签 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 曾经的内容。谁能解释一下为什么会发生这种情况?

提前致谢。

最佳答案

您是对的,previous.nextcurrent 指向同一个对象。我们将该对象称为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/

相关文章:

javascript - 包含键的返回对象长度为真不为假

javascript - 在 JavaScript 中检查互联网连接

c++ - 避免集合的头节点需要空构造函数

c - C++ 链表中的成对交换

javascript - 使用 MouseOver 和 MouseOut

javascript - 使标签像输入按钮一样

javascript - Bootbox 将 DIV 标签移到表外

c - C 中的简单链表函数

c - 段错误 :11 in my code for creating a linked list in C

c - 通过函数修改LinkedList