1. 题目描述
2. 题目分析
- 有一说一,题目有点沙雕
- 用两个队列来实现一个栈
- 栈:先进后出、队列:先进先出
- 我们用两个队列来模拟栈,一个队列当主栈,一个队列用来辅助,我们在push的时候,将主栈的元素转移到辅助栈中,然后push至主栈,再从辅助栈拿回所有的数据,这样,一个模拟的栈基本构成
- pop(),直接应用队列的poll()
- top(),直接应用队列的peek()
- empty(),直接应用队列的isEmpty()
3. 题目代码
public class Stack {
Queue<Integer> queue1 = new LinkedList<Integer>();
Queue<Integer> queue2 = new LinkedList<Integer>();
/**
* Initialize your data structure here.
*
* @return
*/
public Stack() {
}
/** Push element x onto stack. */
public void push(int x) {
while (!queue1.isEmpty()) {
queue2.add(queue1.peek());
queue1.poll();
}
queue1.add(x);
while (!queue2.isEmpty()) {
queue1.add(queue2.peek());
queue2.poll();
}
}
public int pop() {
int temp = queue1.peek();
queue1.poll();
return temp;
}
/** Get the top element. */
public int top() {
return queue1.peek();
}
/** Returns whether the stack is empty. */
public boolean empty() {
return queue1.isEmpty();
}
}