Repl:https://repl.it/@Stylebender/LinkedList#index.js
所以我知道代码是正确的,但我只是好奇第21行相对于append method()
是如何工作的。
如果我们声明指针(this.tail.next)
应该指向newNode
,那么this.head.next不应该每次都引用一个newNode,这样this.head.next
就只能是被附加的最新newNode的==={ value: X, next: null }
。
我知道这显然是错误的,但事实并非如此,因为当你运行repl并开始多次调用append方法时,你会得到越来越大的下一个值。
我想我的问题是,为什么每次我们调用append方法时,{ value: X, next: null }
形式的newNode不覆盖head属性,因为这不是我们告诉程序要做的吗?(尽管我知道这显然是错误的(
链表的头总是指向同一个节点。当添加新节点时,它们被添加到尾部,头部实际上不会改变
在您的情况下,添加第一个节点时,头只会发生变化,因为它不再指向null,而是指向刚刚添加的新节点。然而,它的价值并没有改变。添加的任何连续节点都会附加到列表的末尾。因此,当添加第三个节点时,第二个节点将变为指向第三个结点。