用两个栈实现队列
题目
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。
思路
主要思路就是全部进入stack1,在弹出的时候都pop出Stack2。然后再从stack2中pop出来。
代码
public class twostackstoqueue{
private static Stack<object> stack1 = new Stack<object>();
private static Stack<object> stack2 = new Stack<object>();
public static void appendTail(object item){
stack1.push(item);
}
public static void deleteHead(){
if(!stack2.empty())
stack2.pop();
else{
if(stack1.empty())
throw new RuntimeException("队列为空");
while(!stack1.empty()){
Object item=stack1.pop();
stack2.push(item);
}
}
}
}