题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。
哈哈,终于算是自己编写了一个程序了,虽然这个程序比较简单,估计一下
其思想就是两个队列stack1和stack2
stack1负责接收push的元素,stack2将从stack1中pop出的元素依次接收并pop出
这样次序就相当于一个队列的次序了
package 剑指offer;
import java.util.*;
/*题目:用两个栈实现一个队列。队列的声明如下,
* 请实现它的两个函数appendTail 和deleteHead,
* 分别完成在队列尾部插入结点和在队列头部删除结点的功能。*/
public class Test07 {
public static void main(String args[]){
// 创建队列并依次添加元素1/2/3
List<Integer> quene = new List<Integer>();
for(int i = 0; i < 3; i++){
quene.appenTail(i);
}
// 应该是依次删除1/2
quene.deleteHead();
quene.deleteHead();
// 添加元素4
quene.appenTail(4);
// 依次删除元素3/4
quene.deleteHead();
quene.deleteHead();
}
public static class List<T>{
Stack<T> stack1 = new Stack<T>();
Stack<T> stack2 = new Stack<T>();
public void appenTail(T obj){
//改函数用于在尾部向队列添加数据
while(!stack2.isEmpty()){
// 如果stack2中国有元素,那么先将元素移动到stack1中
T temp = stack2.pop();
stack1.push(temp);
}
stack1.push(obj);
}
public void deleteHead(){
while(!stack1.empty()){
T temp = stack1.pop();
stack2.push(temp);
}
System.out.println("删除元素:"+stack2.pop());
//改函数用于在头部删除数据
}
}
}
故不积跬步,无以至千里