data-structures - 在链表中追加
问题描述
回复: 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 属性,因为这不是我们告诉程序要做的吗?(即使我知道这显然是错误的)
解决方案
链表的头总是指向同一个节点。当添加新节点时,它们被添加到末尾成为尾部,头部实际上并没有改变。
在您添加第一个节点的情况下,头部仅更改,因为它不再指向 null,它指向刚刚添加的新节点。然而它的价值并没有改变。添加的任何连续节点都被添加到列表的末尾。因此,当添加第三个节点时,第二个节点会更改为指向第三个节点。
推荐阅读
- swift - 尝试更改 NSTextField 的值时,我得到“在隐式展开可选值时意外发现 nil”
- ios - 有什么方法可以使用私有 API 或 BLE 在 iOS 12 / 13 中以编程方式启动 Siri?
- javascript - 滚动父div后如何检测哪个子元素可见?
- python-3.6 - 调查代码,来自另一个 if 语句的 if 语句
- python - 如何在 Python 中将文章推荐器建模为 Q 学习问题
- ios - 如何检查当前 iOS 设备是否支持多个场景/窗口?
- laravel - 我遇到了一个关于从 laravel eloquent 关系中获取数据的逻辑错误
- java - 如何设计一个视图来模拟 Web 服务调用时的自动转换?
- streamsets - HADOOPFS - 无法验证流集中的基本目录
- reactjs - React onChange 不会在输入更改时更新