【发布时间】:2021-02-08 00:50:48
【问题描述】:
class Node():
def __init__(self, val, next=None):
self.val = val
self.next = next
def __str__(self):
return self.val
class LinkedList():
def __init__(self):
self.head = None
def __repr__(self):
node = self.head
nodes = []
while node is not None:
nodes.append(node.val)
node = node.next
nodes.append("None")
return "->".join(nodes)
def add_first(self, node):
if not self.head:
self.head = node
else:
node.next = head
self.head = node
def add_last(self, node):
if not self.head:
self.head = node
return
else:
curr = self.head
while curr.next != None:
curr = curr.next
curr.next = node
def add_before(self, target_data, node):
if self.head.val == target_data:
node.next = head
self.head = node
else:
prev_node = self.head
for node in self:
if node.val == target_data:
prev_node.next = new_node
new_node.next = node
return
prev_node = node
if __name__ == "__main__":
llist = LinkedList()
first = Node('a')
llist.head = first
second = Node('b')
first.next = second
third = Node('c')
print(llist)
llist.add_last(third)
print(llist)
llist.add_before("b", Node('d'))
print(llist)
错误:对于自身中的节点: TypeError: 'LinkedList' 对象不可迭代
有人可以帮我理解这个问题以及如何解决它吗? 试图理解并解决问题
【问题讨论】:
-
始终发布完整的错误消息,包括堆栈跟踪。不要让我们猜测错误发生在哪里,堆栈跟踪会告诉我们确切的位置。
-
但是,您希望
for node in self:做什么?为什么?
标签: python linked-list