我正在学习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 是指如何从当前节点转到下一个节点。我理解 是做什么但不是 它做到了。什么是实际的基础结构/原则?如何将指针实际分配给第一个元素?
希望它更有意义,我对术语不太熟悉。
答案 0 :(得分:1)
current_node只是Node对象的一个实例,并将next_node作为属性。 这里我们有一个带头的linkedList,在add(self,data)函数中我们用相应的数据构建一个new_node,然后你指定一个指向你的linkedList的第一个元素的指针(即current_node)并开始迭代你的列表。 / p>
当next_node初始化为None
时,如何应用它
在你的代码中,next_node是None,但它并非总是如此! 添加功能可以完成如下:
while current_node.next_node != None:
current_node = current_node.next_node
current_node.next_node = new_node
答案 1 :(得分:0)
在您提到的代码段中,从开始到结尾搜索单向链接列表,该列表由None
标记为字段next
的值。它是一个字段(变量是对象的一部分)而不是函数。
答案 2 :(得分:0)
while current_node.next_node != None:
的部分只是一个循环,用于查找链接列表的结尾。
您使用self.next_node = None
初始化列表,这意味着列表为空。
然后当你add
一个元素时,你遍历列表中的每个元素,找到你需要放置它的地方。当您找到值None
时,它就是列表的末尾,那就是您必须放置新元素的位置。 (假设没有元素作为值None
)。
此处next_node
只是您的类Node