题目
分析
创建两个栈,stack1和stack2,stack1作为主栈,stack2作为副栈,每次appendTail时,直接入栈stack1即可,deleteHead时,先判断stack1是否为空,然后将多余的元素弹出到stack2中,再弹出stack1的栈底元素,然后再将stack2中的元素弹回到stack1中,这就完成了deleteHead操作。
代码
class CQueue {
private Stack<Integer> stack1=null;
private Stack<Integer> stack2=null;
public CQueue() {
stack1=new Stack<>();
stack2=new Stack<>();
}
public void appendTail(int value) {
stack1.push(value);
}
public int deleteHead() {
if(stack1.isEmpty())
return -1;
while(stack1.size()>1)
stack2.push(stack1.pop());
int temp=stack1.pop();
while(!stack2.isEmpty())
stack1.push(stack2.pop());
return temp;
}
}
/**
* Your CQueue object will be instantiated and called as such:
* CQueue obj = new CQueue();
* obj.appendTail(value);
* int param_2 = obj.deleteHead();
*/