python - 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
解决方案
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
...
推荐阅读
- c++ - 当捕获 lambda 仿函数在另一个作用域/函数中被调用时,实际上会发生什么?
- c# - 如何将图像上传到 LinkedIn 以在 C# 中发布 Ugc 图像
- python - 将二进制值转换为日期时间 python
- javascript - 尝试使用按钮切换布尔变量
- angular - 为什么我使用获取请求角度时出错?
- php - 使用 cURL 和 PHP 连接 api.dynadot.com 失败
- javascript - 如何获取用户的表单输入并将其用于事件元素?
- java - Android Studio:如何将 .sfb 文件从一个项目复制/粘贴到另一个项目?
- c - 奇怪的类型转换行为
- accessibility - IE11中如何使用标签导航控制pdf查看器