代码之家  ›  专栏  ›  技术社区  ›  Mike Chan

在链表中追加

  •  0
  • Mike Chan  · 技术社区  · 6 年前

    https://repl.it/@Stylebender/LinkedList#index.js

    所以我知道代码是正确的,但我只是好奇第21行是如何工作的 append method() .

    (this.tail.next) 应该指向 newNode ,this.head.next不是每次都要引用一个新节点吗 this.head.next { value: X, next: null } 正在追加的最新newNode的。

    我知道这显然是错误的,显然不是这样,因为当您运行repl并开始多次调用append方法时,您会得到越来越大的next值。

    我想我的问题是为什么newNode不以 {值:X,下一个:null} 每次调用append方法时,只需覆盖head属性,因为这不是我们告诉程序要做的吗(尽管我知道这显然是错误的)

    0 回复  |  直到 6 年前
        1
  •  0
  •   Hannah B    6 年前

    链表的头总是指向同一个节点。当新的节点被添加时,它们被添加到尾部成为尾部,头部实际上没有改变。
    在添加第一个节点时,头只会更改,因为它不再指向null,而是指向刚刚添加的新节点。然而,它的价值并没有改变。添加的任何连续节点都会附加到列表的末尾。因此,当添加第三个节点时,第二个节点变为指向第三个节点。