思路:两个栈,一个用来给队列尾部插入节点,一个用来队列头部删除节点。即栈A实现入队,栈B实现出队。实现栈可以用Stack或者LinkedList,Stack是数组,LinkedList是链表。通常不推荐使用Stack,效率较低。频繁地插入删除操作推荐使用LinkedList。
class CQueue {
Stack<Integer> A,B;
public CQueue() {
A = new Stack<>();
B = new Stack<>();
}
public void appendTail(int value) {
A.push(value);
}
public int deleteHead() {
if (B.isEmpty()){
if (A.isEmpty()){
return -1;
}
while (!A.isEmpty()){
B.push(A.pop());
}
}
return B.pop();
}
}