题目:
用两个栈实现一个队列。队列的声明如下,请实现他的两个函数 appendTail,deleteHead分别在队列的尾部插入数据,和队列头部删除数据。
输入:
1234,
输出:
1234;
解题思路:
队列是先进先出,栈是后入先出,我们的第一个栈专门用于插入数据,第二个用于存入第一个栈的出栈, 那么当我们要删除队头的时候,只需要从第二个栈中出栈就可以了
Java代码实现:
public class Queue {
/**
* @param args
*/
//第一个栈用于队列插入,第二个栈用于队列删除
public static Stack<Integer> stack1=new Stack<Integer>();
public static Stack<Integer> stack2=new Stack<Integer>();
public static void appendTail(int data){
stack1.push(data);
}
public static void deleteHeader(){
while(!stack1.empty()){
stack2.push(stack1.pop());
}
System.out.println(stack2.pop());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
appendTail(10);
appendTail(20);
deleteHeader();
deleteHeader();
}
}