使用队列实现链接列表:Python

时间:2020-08-10 02:29:33

标签: python linked-list queue

我正在尝试使用链接列表来实现队列。它通常可以正常工作,但是我认为我的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

1 个答案:

答案 0 :(得分:1)

如果希望引发错误,请使用 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.
相关问题