classMyStack{
Queue<Integer> queue1;// 和栈中保持一样元素的队列
Queue<Integer> queue2;// 辅助队列/** Initialize your data structure here. */publicMyStack(){
queue1 =newLinkedList<>();
queue2 =newLinkedList<>();}/** Push element x onto stack. */publicvoidpush(int x){
queue2.offer(x);// 先放在辅助队列中while(!queue1.isEmpty()){
queue2.offer(queue1.poll());}
Queue<Integer> queueTemp;
queueTemp = queue1;
queue1 = queue2;
queue2 = queueTemp;// 最后交换queue1和queue2,将元素都放到queue1中}/** Removes the element on top of the stack and returns that element. */publicintpop(){return queue1.poll();// 因为queue1中的元素和栈中的保持一致,所以这个和下面两个的操作只看queue1即可}/** Get the top element. */publicinttop(){return queue1.peek();}/** Returns whether the stack is empty. */publicbooleanempty(){return queue1.isEmpty();}}