使用两个栈来实现一个队列。需要实现enqueue(入队)、dequeue(出队)和front(返回队首元素)操作
时间: 2024-05-16 13:15:38 浏览: 75
使用两个栈来实现一个队列,需要将一个栈用于存储入队元素,另一个栈用于存储出队元素。具体实现如下:
1. 定义两个栈:stack1和stack2
2. 当执行入队操作时,将元素入栈stack1
3. 当执行出队操作时,先判断stack2是否为空,如果不为空,则弹出stack2栈顶元素;如果为空,则先将stack1中的元素全部弹出并压入stack2中,再弹出stack2栈顶元素
4. 当执行front操作时,先判断stack2是否为空,如果不为空,则返回stack2栈顶元素;如果为空,则先将stack1中的元素全部弹出并压入stack2中,再返回stack2栈顶元素
下面是用Python实现的代码:
```python
class Queue:
def __init__(self):
self.stack1 = []
self.stack2 = []
def enqueue(self, value):
self.stack1.append(value)
def dequeue(self):
if not self.stack2:
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2.pop() if self.stack2 else None
def front(self):
if not self.stack2:
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2[-1] if self.stack2 else None
```
测试代码:
```python
q = Queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
print(q.front()) # 输出1
print(q.dequeue()) # 输出1
print(q.front()) # 输出2
print(q.dequeue()) # 输出2
print(q.front()) # 输出3
print(q.dequeue()) # 输出3
print(q.front()) # 输出None
print(q.dequeue()) # 输出None
```
阅读全文