删除Python链表

时间:2018-04-25 21:26:05

标签: python

调用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

1 个答案:

答案 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
...