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

时间:2018-01-19 11:36:08

标签: python pointers reference

我正在学习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 是指如何从当前节点转到下一个节点。我理解 是做什么但不是 它做到了。什么是实际的基础结构/原则?如何将指针实际分配给第一个元素?

希望它更有意义,我对术语不太熟悉。

3 个答案:

答案 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

的字段