栈和队列是常见的数据结构,栈的特点是 先进后出
,而队列的特点是 先进先出
。
请使用 栈 模拟实现队列的下列操作:
说明:
- 可以用 列表list 来模拟栈,但只允许使用栈的基本操作。
- 假设每次调用 pop 和 peek 都能保证队列不为空。
class MyQueue: def __init__(self): self.stack1 = [] # 输入栈 self.stack2 = [] # 输出栈 def push(self, x): self.stack1.append(x) def pop(self): if self.stack2 == []: while self.stack1: self.stack2.append(self.stack1.pop()) return self.stack2.pop() def peek(self): tmp = self.pop() self.stack2.append(tmp) return tmp def empty(self): return self.stack1 == [] and self.stack2 == []
class MyQueue: def __init__(self): self.stack1 = [] # 辅助栈 self.stack2 = [] # 存放队列元素 def push(self, x): while self.stack2: self.stack1.append(self.stack2.pop()) self.stack1.append(x) while self.stack1: self.stack2.append(self.stack1.pop()) def pop(self): return self.stack2.pop() def peek(self): return self.stack2[-1] def empty(self): return self.stack2 == []