[英]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.