首页 > 解决方案 > 在链表中追加

问题描述

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

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

如果我们声明指针(this.tail.next)应该指向newNode,那么 this.head.next 不应该每次都引用单个 newNode 以便this.head.next永远只是 ==={ value: X, next: null }正在附加的最新 newNode 。

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

我想我的问题是,为什么每次调用 append 方法时 newNode 都不会 { value: X, next: null } 覆盖 head 属性,因为这不是我们告诉程序要做的吗?(即使我知道这显然是错误的)

标签: data-structureslinked-listsingly-linked-list

解决方案


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


推荐阅读