题目描述
使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 注意:
你只能使用队列的基本操作– 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。 你可以假设所有操作都是有效的(例如, 对一个空的栈不会调用 pop 或者 top 操作)。
解题思路
-
使用两个队列
将元素添加到第一个队列中。
在获取元素时,将第一个队列中除了最后一个元素都添加到第二个队列中,剩下的这个就是要返回的元素。
将两个队列进行交换,这样在添加元素时都能放到第一个队列中。
使用一个变量来存储最后一个元素,这样在调用 top 方法时直接返回这个变量即可。
-
使用一个队列
添加元素时添加到队列中,然后将队列中的元素除了最后一个再重新放入一遍
在获取元素和查看元素时都拿第一个即可
代码实现
- 双队列实现
|
|
- 单队列实现
|
|