题目
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。
实现 MyStack 类:
void push(int x) 将元素 x 压入栈顶。
int pop() 移除并返回栈顶元素。
int top() 返回栈顶元素。
boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。
提示:
1 <= x <= 9
- 最多调用
100
次push
、pop
、top
和empty
- 每次调用
pop
和top
都保证栈不为空
进阶:
你能否仅用一个队列来实现栈。
解法1
栈的特点是后入先出(LIFO),队列的特点是先入先出(FIFO),可通过一个队列保存数据,入栈的话直接将数据保存至队列中,但是在出栈的时候,可借助另外一个临时队列先将保存数据队列中除开最后一个数据进行保存,拿到队列中最后一个元素后将剩余元素重复进行保存。
代码如下:
class MyStack {
public:
MyStack