调用remove_from_tail()方法时,链表中的最后一个元素将从链表中删除。您对此练习的解决方案将是LinkedList类的最小实现,该类包含以下方法: init (),print_all(),add()和remove_from_tail()。要完成remove_from_tail()方法,创建循环并使用“curr”引用来定位列表中的最后一个元素可能很有用,但同时保持对链中前一个节点的“prev”引用。到达列表末尾后,可以将“prev”指针的“next”字段设置为None以删除最后一个元素。您可以假设在调用remove_from_tail()时列表中至少会有一个元素 - 但是,如果只有一个元素,那么当删除该元素时,您需要将头设置为None。
编辑: 我已经改变了我的代码并把事情做对了,然而,仍然有一些小错误的东西,我似乎无法找出原因。这是我的新代码:
def remove_from_tail(self):
current = self.head
previous = current
while current.get_next() != None:
previous = current
current = current.get_next()
previous.set_next(None)
return current.get_data()
必须修正的错误:Sample2
答案 0 :(得分:0)
while循环条件只处理多项列表。尝试添加条件以在while循环之前检查单项列表:
# Check for an empty list
...
# Check for one-item list
if current.get_next() == None:
data = current.get_data()
self.head = None
return data
# Multi item list
...