1-2 两个栈模拟一个队列

题目描述

  • 用两个栈模拟一个队列,实现队列基本的入队,出队,取队头的功能。

解题方法1

  • 首先准备两个栈s1和s2,s1作为压入栈,s2作为弹出栈。而且必须满足,将s1数据转给s2时必须一次性全部转完,如果s2还有数据就不能把s1数据转给s2。
  • 实现入队操作只需要对s1入栈即可。
  • 实现出队功能时,如果s2不为空,s2直接出栈。如果s2为空s1有数据,那么把s1的所有数据出栈,入栈到s2,然后s2出栈一个元素。如果s1 s2均为空,说明队列为空抛异常。
  • 取队头类似,如果s2不为空返回s2的栈顶,如果s2为空s1不为空,把s1数据挪到s2然后返回s2的栈顶。如果s1s2均为空,说明队列为空。
  • 实现代码
class queue{
   
    private Stack<Integer> stack1;
    private Stack<Integer> stack2;

    queue(){
   
        this.stack1 = new Stack<>();
        this.stack2 = new Stack<>();
    }
    public void add(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值