python-3.x - 为什么我们将节点分配给链表中的指针
问题描述
请参考下面的代码
代码中的cur是一个节点,因此它由一个数据值和一个名为 next 的变量组成。我不明白第 15 行:
cur = cur.next
即为什么我们将 cur.next 分配给一个节点(即 cur))?同样,在第 16 行 ``` cur.next=new_node
... why are are we assigning a node (i.e called new_node) to cur.next when cur.next is not even a node?
I haven't found an answer in many youtube videos, stack exchange webpage, google, linkedlist and other searches.
Any help would greatly be appreciated.
[![enter image description here][1]][1]
[1]: https://i.stack.imgur.com/qan4R.png
解决方案
您正在将一个新节点附加到链接列表中。因此,您将当前节点设置为头部(链中的第一件事)。现在您想将链接添加到链的末尾,有两种方法可以做到这一点。您可以在开头插入一个新链接(从而改变头部,而不是在此处完成的操作),或者您可以在链的末尾插入一个新链接(这里发生了什么)。所以curr此时是一个临时节点,它指向头部(第一个链接)。如果 curr.next == none,我们知道没有另一个链接,我们希望在链接末尾添加一个项目。所以这段代码使用了一个while循环来改变插入的位置。curr
连续变成curr.next
(如果有的话)直到curr
是链的最后一个环节,意思是curr.next
是下一个链接应该去的空白空间。现在您将 new_node 插入到带有分配的链的末尾curr.next = new_node
将链表描绘为从左到右的链可能更容易。
头部在左侧,这段代码想要在右侧的链中插入一个新链接。所以它从最左边开始,遍历每个链接,直到它意识到右边不再有链接。然后它插入新链接。
您似乎也对操作顺序感到困惑。等号右边的运算将赋值给左边的值。所以x = y
不将y的值设置为x的值,而是将x的值设置为y的值。
推荐阅读
- css - 如何将 a:hover CSS 应用于 H2,它位于同一个锚标记内?
- python-3.6 - Python 3.6 用户定义的板大小赢检查,带 2 个变量
- kdb - 如果我的变量存储从文件读取的数据,为什么它不受某些内置函数的影响?
- node.js - 如何使用 Node.js 中的 Mongoose 更新嵌套 json 数组中的可选字段?
- php - 复选框无法取消选中 php
- for-loop - 递归与迭代 - 何时使用一个而不是另一个
- polygon - 执行与地理相交的正确语法
- c# - (TS) 找不到名称“使用”
- r - `read.csv()` 将文本列导入为数字
- c - 从客户端向服务器发送消息,反之亦然