提问人:Volpina 提问时间:11/27/2022 最后编辑:SamwiseVolpina 更新时间:11/28/2022 访问量:25
python 问题中的链表实现
Linked list implementation in python issue
问:
我一直在尝试在 python 中实现链接列表。默认情况下,Python 中函数内部变量的任何调用都是通过引用调用。我有这个代码:
对于list_node:
class list_node:
def __init__(self,obj,next_listnode):
self.obj = obj
self.next_listnode = next_listnode
对于linked_list:
class linked_list:
def __init__(self,list_node):
self.list_node =list_node
def add_node(self,obj):
current = self.list_node
while(current.next_listnode is not None):
current = current.next_listnode
current.next_listnode = obj;
def print_linkedlist(self):
current = self.list_node
while(current.next_listnode is not None):
print("",current.obj)
print("\n")
current = current.next_listnode
我创建 2 list_nodes 1,其中我将其添加为链表的初始list_node,另一个使用函数add_node:
A = list_node("John",None)
B = list_node("Mike",None)
liste = linked_list(A)
liste.add_node(B)
liste.print_linkedlist();
但是,当我调用print_linkedlist函数时,它只打印 A list_node
我做错了什么? 然而
我尝试不调用add_node函数,但它没有打印任何内容。
答:
1赞
Samwise
11/28/2022
#1
如果在列表中再添加一个节点,问题就会变得更加清晰:
A = list_node("John",None)
B = list_node("Mike",None)
C = list_node("Biff",None)
liste = linked_list(A)
liste.add_node(B)
liste.add_node(C)
liste.print_linkedlist()
这会打印“John”和“Mike”——所以问题不在于你只打印第一个节点,而在于你没有打印最后一个节点。
这是因为你的函数在以下时间停止迭代——也就是说,一旦它到达最后一个节点(没有“下一个”节点的节点),它就会停止,并且它不会打印该节点。print_linkedlist
current.next_listnode is not None
我建议这样做:
def print_linkedlist(self):
current = self.list_node
while current:
print(current.obj)
current = current.next_listnode
以便打印列表的所有节点。
评论