使用Queues:Python实现链表



我正在尝试使用链表实现一个队列。它基本上是有效的,但我认为我的is_empty函数有问题,因为当我运行代码并试图在队列中没有任何东西的情况下出列时,它应该说IndexError("Can't dequeue from empty queue."),但我的测试告诉我它没有返回

测试:

Failed example:
result = q.dequeue()
Expected:
Traceback (most recent call last):
...
IndexError: Can't dequeue from empty queue.
Got nothing

出列和is_empty函数的代码:

def dequeue(self):

if self.is_empty(): 
return IndexError("Can't dequeue from empty queue.")
else:
to_return = self.head.item
self.head = self.head.next_node
return to_return

def is_empty(self):
""" returns True if the queue is empty """
return self.head is None

如果您希望抛出错误,请使用raise语句,而不是return

这是示例代码:

class Queue():
def __init__(self):
self.head = None
def dequeue(self):
if self.is_empty(): 
raise IndexError("Can't dequeue from empty queue.")
else:
to_return = self.head.item
self.head = self.head.next_node
return to_return

def is_empty(self):
""" returns True if the queue is empty """
return self.head is None
queue = Queue()
item = queue.dequeue()
print(item)

输出:

Traceback (most recent call last):
File "test2.py", line 20, in <module>
item = queue.dequeue()
File "test2.py", line 8, in dequeue
raise IndexError("Can't dequeue from empty queue.")
IndexError: Can't dequeue from empty queue.