我是 python 的新手,想知道如何处理反转队列。现在,如果我理解正确的话,队列只是一种可以用任何语言实现的数据结构,例如使用 Python 中的列表。
所以基本上如果一个问题要求反转堆栈或队列,但由于两者都可以使用列表来表示,这不是说要反转列表的内容吗?我对这个主题做了一些研究,发现通过使用一个类和方法,您可以实现入队、出队和 isEmpty 操作。
class Queue:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def enqueue(self, item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
因此,如果我被要求反转队列堆栈的内容,这是否意味着我必须仅使用上述方法来反转列表的内容? (通过只删除列表前面的项目,并在列表后面添加项目)
请您参考如下方法:
您可以使用辅助堆栈来反转队列中的元素。
基本上,您将堆叠队列中的每个元素,直到它变空。然后弹出堆栈中的每个元素并将其排入队列,直到堆栈为空。
# suppose your have a Queue my_queue
aux_stack = Stack()
while not my_queue.isEmpty():
aux_stack.push(my_queue.dequeue())
while not aux_stack.isEmpty():
my_queue.enqueue(aux_stack.pop())
