题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。
我们知道,栈(Stack)是一个后进先出(LIFO,Last In First Out)结构,而队列(Queue)是一个先进先出(FIFO,First In First Out)结构。题目要求我们用栈来模拟队列的行为。
1. 队列的操作
队列有两个基本的操作:
- appendTail(val):在队列的尾部插入一个元素。
- deleteHead():在队列的头部删除一个元素。
我们需要通过两个栈来实现这些操作。
2. 栈的基本操作
栈的基本操作:
- push(val):将元素
val
压入栈顶。 - pop():从栈顶弹出元素。
- empty():检查栈是否为空。
- len():返回栈中的元素数量。
在代码中,我们使用 Python 的 deque
类型来实现栈,因为 deque
提供了高效的从两端进行操作的方法。
3. 实现思路
用两个栈 s1
和 s2
来模拟队列:
- appendTail(val):直接将元素
val
压入栈s1
,这相当于在队列的尾部插入元素。 - deleteHead():如果栈
s2
非空,直接从栈s2