首页 > 解决方案 > 为什么我们将节点分配给链表中的指针

问题描述

请参考下面的代码

代码中的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

标签: python-3.xpython-2.7listlinked-list

解决方案


您正在将一个新节点附加到链接列表中。因此,您将当前节点设置为头部(链中的第一件事)。现在您想将链接添加到链的末尾,有两种方法可以做到这一点。您可以在开头插入一个新链接(从而改变头部,而不是在此处完成的操作),或者您可以在链的末尾插入一个新链接(这里发生了什么)。所以curr此时是一个临时节点,它指向头部(第一个链接)。如果 curr.next == none,我们知道没有另一个链接,我们希望在链接末尾添加一个项目。所以这段代码使用了一个while循环来改变插入的位置。curr连续变成curr.next(如果有的话)直到curr​​是链的最后一个环节,意思是curr.next是下一个链接应该去的空白空间。现在您将 new_node 插入到带有分配的链的末尾curr.next = new_node

将链表描绘为从左到右的链可能更容易。

头部在左侧,这段代码想要在右侧的链中插入一个新链接。所以它从最左边开始,遍历每个链接,直到它意识到右边不再有链接。然后它插入新链接。

您似乎也对操作顺序感到困惑。等号右边的运算将赋值给左边的值。所以x = y 不将y的值设置为x的值,而是将x的值设置为y的值。


推荐阅读