[英]how does the linked list goes to the second node
所以我在python中学习链表,但我不明白链表如何进入第二个节点,因为它将下一个节点指定为根节点,请向我解释,谢谢。 编码
class Node
def __init__(self,d,n=None,p=None):
self.data=d
self.next_node=n
self.previous_node=p
def __str__(self):
return ('(' + str(self.data) + ')')
class linked_list:
def __init__(self,r=None):
self.root=r
self.size=0
def add(self,d):
new_node=Node(d,self.root)#here i didn't understand how we assign the next node
self.root=new_node
self.size +=1
def find(self,d):
this_node=self.root
while this_node is not None:
if this_node.data==d:
print(this_node.next_node)
return this_node.data
else:
this_node = this_node.next_node
return None
def remove(self,d):
this_node=self.root
previouse_node=None
while this_node is not None:
if this_node.data==d:
if previouse_node is not None:
previouse_node.next_node=this_node.next_node
else:
self.root=this_node.next_node
self.size -=1
else:
previouse_node=this_node
this_node=this_node.next_node
return False
def print_list(self):
this_node = self.root
while this_node is not None:
print(this_node, end='->')
this_node = this_node.next_node
print('None')
l_list=linked_list()
l_list.add('4')
l_list.add('40')
l_list.add('5')
l_list.print_list()
#///////////////////////////////////////////////// /////////////////////////////////////
在 add 函数中,我们创建了一个新节点,它将成为我们的新根,也就是我们的新第一个元素。 因此,我们首先将当前根分配为新节点的 next_node。 之后,我们将新节点设为新的根节点。
linked_list.root
属性实际上就像一条尾巴。 当添加一个新节点时,它成为原始root
的next_node
并且root
被分配给新节点(使其内容成为尾,而不是根)。
此外,Node 类建议使用双向链表,但它的previous_node
值没有由 links_list.add 正确分配。
如果这不是您的代码,那么它就不是一个值得学习的好例子。 如果是,那么它需要更多的工作,您可能应该在纸上画出将节点添加到列表中应该产生的链接。
例如:
linked_list.root
|
v
None <-- node1 --> None
linked_list.add(node2) ...
应该发生什么:
linked_list.root
|
v
None <-- node1 --+
^ |
| v
+--- node2 --> None
实际发生的情况:
linked_list.root # points to the last node added (i.e. tail)
|
v
None <-- node2 --> None # missing link to node1
^
|
None <-- node1 --+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.