栈:先进后出
队列:先进先出
思路:利用一个队列做主队列,另一个队列作为辅助队列,把元素翻转过来即可。
public class Test {
class QueueStack {
private Queue<Integer> queueA = new LinkedList<Integer>();
private Queue<Integer> queueB = new LinkedList<Integer>();
public void push(Integer val) {
if(queueA.size() ==0) {
queueA.offer(val);
}else {
//之前的先出队列,保存到queueB
while(!queueA.isEmpty()) {
queueB.offer(queueA.poll());
}
//把当前元素放到A中
queueA.offer(val);
//把队列B中的元素重新放到A中
while(!queueB.isEmpty()) {
queueA.offer(queueB.poll());
}
}
}
public Integer pop() {
return queueA.poll();
}
}
public static void main(String[] args) {
Test test = new Test();
QueueStack queueStack = test.new QueueStack();
queueStack.push(1);
queueStack.push(2);
queueStack.push(3);
Integer val = null;
while ((val = queueStack.pop()) != null) {
System.out.println(val);
}
}
}