繁体   English   中英

Python 3:链接列表中下一个节点的引用/指针后面的语法逻辑

[英]Python 3: Syntax logic behind reference/pointer to next node in Linked List

我正在学习Python 3中的链接列表。这是一个代码段(不是我的):

Class Node:
    def __init__(self, data = None):
      self.data = data
      self.next_node = None

Class LinkedList:
    def __init__(self):
      self.head = Node()

def add(self, data):
    new_node = Node(data)
    current_node = self.head
    while current_node.next_node != None:
      do something...

我不太了解的是while current_node.next_node != None:

这是否是实例变量使用的情况,就像将某种函数应用于另一个变量一样? next_node初始化为None时,如何应用? 我了解链接列表作为数据结构的逻辑,但不了解语法的逻辑。

编辑:谢谢大家的答案! 我意识到我对自己真正想知道的还不够清楚。 该代码段只是一个代码段,其余的代码也按预期运行(不要介意本文中的错误缩进)。

我不明白的是current_node.next_node意味着从当前节点转到下一个节点。 我了解是做什么的,但不知道它是如何做的。 实际的底层结构/原理是什么? 指针实际上是如何分配给第一个元素的?

希望它更有意义,我对行话不太熟悉。

current_node只是Node对象的一个​​实例,具有next_node作为属性。 在这里,我们有一个带有头部的linkedList,在add(self,data)函数中,我们用相应的数据构建了一个new_node,然后您将指针分配给LinkedList的第一个元素(即current_node)并开始遍历列表。

以及将next_node初始化为None时如何应用

在您的代码中,next_node是None,但并非总是如此! 和添加功能可以完成如下:

while current_node.next_node != None:
  current_node = current_node.next_node
current_node.next_node = new_node

在您提到的代码段中,从头到尾搜索单向链接列表,该列表以None标记为next字段的值。 它是一个字段(变量是对象的一部分)而不是一个函数。

while current_node.next_node != None:只是一个循环,查找链接列表的末尾。

使用self.next_node = None初始化列表,这意味着列表为空。

然后,当您add元素时,您将遍历列表中的每个元素以找到需要放置该元素的位置。 当您找到值None ,它就在列表的末尾,这是您必须放置新元素的地方。 (假设没有元素作为值None )。

在这里, next_node只是类Node的一个字段

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM