题目
队列实现栈
解析
首先准备两个队列queue1、queue2
数据[1,2,3,4,5]依次入队queue1,之后把[1,2,3,4]依次出兑在入队到queue2,[5]留在queue1中
此时[5]在出队可实现"出栈"操作,[5]出队都queue2中的数据依次返回queue1中,新加的元素此时接在其后即可
代码
public static class TwoQueueStack<T> {
public Queue<T> queue;
public Queue<T> help;
public TwoQueueStack() {
queue = new LinkedList<>();
help = new LinkedList<>();
}
public void push(T value) {
queue.offer(value);
}
public T poll() {
while (queue.size() > 1) {
help.offer(queue.poll());
}
T ans = queue.poll();
Queue<T> tmp = queue;
queue = help;
help = tmp;
return ans;
}
public T peek() {
while (queue.size() > 1) {
help.offer(queue.poll());
}
T ans = queue.poll();
help.offer(ans);
Queue<T> tmp = queue;
queue = help;
help = tmp;
return ans;
}
public boolean isEmpty() {
return queue.isEmpty();
}
}