我正在努力实施linked list
来研究数据结构。互联网上有很多优秀的资源,但我仍然不明白我的代码中哪些部分不起作用。
class Node:
def __init__(self, val=None):
self.data = val
self.Next = None
class LinkedList:
def __init__(self):
self.head = None
self.size = 0
def __repr__(self):
temp = self.head
alist = []
while temp.Next is not None:
alist.append(temp.data)
temp = temp.Next
return str(alist)
def add(self, val):
cur = self.head
prev = None
if cur is None:
self.head = Node(val)
else:
while cur is not None:
prev = cur
cur = cur.Next
prev.Next = Node(val)
self.size += 1
if __name__ == '__main__':
alist = LinkedList()
for i in range(10):
alist.add(i)
print(alist)
""" [0,1,2,3,4,5,6,7,8]
我预计它打印出[0,1,2,3,4,5,6,7,8,9],但它错过了最后一个元素。有人可以告诉我我的add
方法错过了什么吗?
提前谢谢!
答案 0 :(得分:0)
要清楚,我原来的add
方法就像这样,
def add(self, val):
temp = Node(val)
temp.Next = self.head
self.head = temp
self.size += 1
然而,它增加了相反顺序的元素,如[9,8,7,6,5,4,3,2,1,0]。所以我将add
更改为
def add(self, val):
cur = self.head
prev = None
if cur is None:
self.head = Node(val)
else:
while cur is not None:
prev = cur
cur = cur.Next
prev.Next = Node(val)
self.size += 1
我以前打印出链表中的所有元素没有问题,但是新方法不会打印出最后一个元素。这是__repr__
问题而不是add
。我改变了__repr__
。谢谢@ inspectorG4dget