使用两个栈来代替队列,其中一个栈实现代替队列的入操作,另外一个栈代替队列的出操作。
当需要出队列时,出栈为空,就将入栈的所有值移动到出栈,然后以出栈代替出队列;两个栈均为空,则返回-1;
class CQueue {
Stack<Integer> stack_push, stack_pop;
public CQueue() {
stack_push = new Stack<>();
stack_pop = new Stack<>();
}
public void appendTail(int value) {
stack_push.push(value);
}
public int deleteHead() {
if(stack_pop.isEmpty() && stack_push.isEmpty()) return -1;
if(stack_pop.isEmpty()){
while(!stack_push.isEmpty()){
stack_pop.push(stack_push.pop());
}
}
return stack_pop.pop();
}
}