【发布时间】:2017-01-31 01:13:20
【问题描述】:
对于此代码,我正在尝试使用 Node 类和 LinkedList 类删除列表的最后一个添加对象。我在这里有这段代码,但由于某种原因它不起作用。我认为这是因为如果列表为空,代码将不起作用,但我不确定如何解决。
class Node:
def __init__(self, init_data):
self.data = init_data
self.next = None
def get_data(self):
return self.data
def get_next(self):
return self.next
def set_data(self, new_data):
self.data = new_data
def set_next(self, new_next):
self.next = new_next
class LinkedList:
def __init__(self):
self.head = None
def print_all(self):
current = self.head
while current != None:
print(current.get_data())
current = current.get_next()
def add(self, item):
new_node = Node(item)
new_node.set_next(self.head)
self.head = new_node
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()
当尝试使用上面的代码运行以下行时,
my_list = LinkedList()
my_list.add('dog')
my_list.add('cat')
my_list.add('bit')
my_list.add('ask')
print(my_list.remove_from_tail())
print(my_list.remove_from_tail())
my_list.print_all()
我得到以下输出:
<__main__.Node object at 0x00000000033A19E8>
<__main__.Node object at 0x00000000033A1A58>
ask
bit
我应该得到什么时候:
dog
cat
ask
bit
感谢任何帮助我了解我做错了什么。
编辑:我只是想更改我的 LinkedList 类的 remove_from_list 方法。其他部分无需更改。
编辑:更改了我的列表,以便我返回当前内部的数据。现在,当我尝试测试以下代码时:
my_list = LinkedList()
my_list.add(400)
print(my_list.remove_from_tail())
my_list.add(300)
print(my_list.remove_from_tail())
my_list.add(200)
print(my_list.remove_from_tail())
my_list.add(100)
print('List')
my_list.print_all()
我得到了输出:
400
400
300
List
100
200
我应该什么时候得到
400
300
200
List
100
编辑:我现在遇到的问题是我需要查看列表中是否只有一个元素需要创建,以便 current.head = None。如何检查列表中是否只有一个元素。
【问题讨论】:
标签: python python-3.x class linked-list