请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push
、top
、pop
和 empty
)。
实现 MyStack
类:
void push(int x)
将元素 x 压入栈顶。int pop()
移除并返回栈顶元素。int top()
返回栈顶元素。boolean empty()
如果栈是空的,返回true
;否则,返回false
。
class MyStack {
Queue<Integer> queue1;
Queue<Integer> queue2;
// offer = push
// poll = pop
// peek
// isEmpty
public MyStack() {
queue1 = new LinkedList<Integer>();
queue2 = new LinkedList<Integer>();
}
public void push(int x) {
queue1.offer(x);// 就是把x这个元素加到队列的最前面,以实现后进先出
while(!queue2.isEmpty()){
queue1.offer(queue2.poll());
}
while(!queue1.isEmpty()){
queue2.offer(queue1.poll());
}
}
public int pop() {
return queue2.poll();
}
public int top() {
return queue2.peek();
}
public boolean empty() {
return queue2.isEmpty();
}
}