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的栈顶出栈就是队列的头部出队
}
}

京公网安备 11010502036488号