leetcode - 225. 用队列实现栈
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通队列的全部四种操作(push、top、pop 和 empty)。
实现 MyStack 类:
void push(int x) 将元素 x 压入栈顶。
int pop() 移除并返回栈顶元素。
int top() 返回栈顶元素。
boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。
public class MyStack {
private Queue<Integer> inQueue;
private Queue<Integer> outQueue;
public MyStack() {
inQueue = new LinkedList<>();
outQueue = new LinkedList<>();
}
/**
* 进栈
*/
public void push(int x) {
inQueue.offer(x);
while (!outQueue.isEmpty()){
inQueue.offer(outQueue.poll());
}
outQueue = inQueue;
inQueue = new LinkedList<>();
}
/**
* 出栈
* @return
*/
public int pop() {
if (!empty()) {
return outQueue.poll();
}
return -1;
}
/**
* 返回栈顶元素
* @return
*/
public int top() {
if (!empty()) {
return outQueue.peek();
}
return -1;
}
/**
* 栈是否为空
* @return
*/
public boolean empty() {
return outQueue.isEmpty();
}
}