class CQueue { Stack<Integer> A; Stack<Integer> B; public CQueue() { A = new Stack<>(); B = new Stack<>(); } //入队 public void appendTail(int value) { B.push(value); } //出队 // 栈B存的是队列的倒序 所以出队时候要将其转到栈A,这样栈A才是正序的 public int deleteHead() { if(A.isEmpty() && B.isEmpty()) //当AB都为空则队列为空 return -1; if(A.isEmpty()){ //当A为空,将B中的转换过来 while(!B.isEmpty()){ A.push(B.pop()); } } return A.pop(); //栈A的栈顶出栈就是队列的头部出队 } }