栈:先进后出
队列:先进先出
思路:利用一个队列做主队列,另一个队列作为辅助队列,把元素翻转过来即可。
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 {//之前的先出队列,保存到queueBwhile(!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);}}}