首页 > 解决方案 > 使用队列实现链表: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

dequeue 和 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

标签: pythonlinked-listqueue

解决方案


如果您希望抛出错误,请使用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.

推荐阅读