最后更新于3年前
比用栈实现队列稍简单些,用python内置的queue,只有两个操作:get和put,分别是取队头元素和在队尾插入,还有一个qsize()返回队大小
入栈push(x):直接入队,栈顶更新为x
出栈pop:栈是先进后出,从队列视角(先进先出)也就是将队尾(最后进的元素)出队。设队大小为size,则出队再入队size-1次,此时队尾移到队头,再出队
栈顶top:即队尾
栈空:即队空
import queue class MyStack: def __init__(self): self.q = queue.Queue() # 队列 self.t = None # 栈顶 def push(self, x: int) -> None: self.q.put(x) self.t = x #队尾变化,栈顶要更新 def pop(self) -> int: for _ in range(self.q.qsize() - 1): x = self.q.get() self.q.put(x) self.t = x #队尾变化,栈顶要更新 return self.q.get() def top(self) -> int: return self.t def empty(self) -> bool: return self.q.qsize() == 0