首页 > 解决方案 > Python链表删除

问题描述

当调用 remove_from_tail() 方法时,链表中的最后一个元素被从链表中删除。您对本练习的解决方案将是包含以下方法的 LinkedList 类的最小实现:init()、print_all()、add() 和 remove_from_tail()。要完成 remove_from_tail() 方法,创建一个循环并使用“curr”引用来定位列表中的最后一个元素可能很有用,但同时保留对链中前一个节点的“prev”引用. 到达列表末尾后,可以将“prev”指针的“next”字段设置为 None 以删除最后一个元素。您可以假设调用 remove_from_tail() 时列表中至少有一个元素 - 但是,如果只有一个元素,则需要在删除该元素时将 head 设置为 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

标签: python

解决方案


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

推荐阅读