package com.coding.basic.stack; import com.coding.basic.Queue; public class StackWithTwoQueues { private Queue queue1; private Queue queue2; public StackWithTwoQueues() { queue1 = new Queue(); queue2 = new Queue(); } public Boolean isEmpty(){ return queue1.isEmpty() && queue2.isEmpty(); } public int size(){ return queue1.size() + queue2.size(); } public void push(int data) { queue1.enQueue(data); } public int pop() { if(isEmpty()){ throw new RuntimeException("The Stack is empty!!!"); } while(!queue1.isEmpty()){ Object temp = queue1.deQueue(); if(queue1.isEmpty()){ return (int)temp; }else{ queue2.enQueue(temp); } } //queue1为空,queue2不为空 while(!queue2.isEmpty()){ Object temp = queue2.deQueue(); if(queue2.isEmpty()){ return (int)temp; }else{ queue1.enQueue(temp); } } return -1;//永远不会执行 } }