剑指offer05--用两个栈来模拟队列

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数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());	
			//改函数用于在头部删除数据
		}
	} 
}

故不积跬步,无以至千里


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值