问题描述
我刚刚开始学习链表,但似乎无法使用函数添加新节点。这是我的代码:
class Node:
def __init__(self,data):
self.data = data
self.next = None
def __repr__(self):
return self.data
class LinkedList:
def __init__(self,nodes=None):
self.head = None
if nodes is not None:
node = Node(data=nodes.pop(0))
self.head = node
# print(self.head)
for elem in nodes:
# print(elem)
node.next = Node(data=elem)
node = node.next
# print(node)
def __repr__(self):
node = self.head
nodes = []
while node is not None:
nodes.append(node.data)
node = node.next
nodes.append("None")
return " - > ".join(nodes)
def __iter__(self):
node = self.head
while node is not None:
yield node
node = node.next
def add_first(self,node):
node.next = self.head
self.head = node
llist = LinkedList(["c"])
llist.add_first("j")
print(llist)
运行此命令时,出现AttributeError:'str'对象没有属性'next'。为什么它不能识别Node类中的“下一个”?
解决方法
您的add_first()函数有一个小错误。
我认为这会对您有所帮助
def add_first(self,s):
node = Node(s)
node.next = self.head
self.head = node