(栈)剑指 Offer 09. 用两个栈实现队列(java)

1.题目详情:

2.实例:

3.分析:

实例花里胡哨的  说白了就是用两个栈一个用入栈实现队列中的入队,一个用弹栈实现队列中的出队,实例输入写的花里胡哨 很多人可能都看不动 写出来也不懂怎么测试

看这里:(提交代码那 下面)

 解释::"你的CQueue对象将被实例化并像这样调用:"

就是创建一个对象 用这个对象调用这两个方法   这里的value的意思是你要入队的值

要是还听不懂下面我拿实例1给做测试

4.具体操作:

package com.ffyc.algorithm;

import java.util.Stack;

public class offer09 {
    //剑指offer9  栈和队列
    //题目:剑指 Offer 09. 用两个栈实现队列
    /*题目描述:
    用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,
    分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )
    */

    private Stack<Integer> enStack;//实现入队功能的入栈
    private Stack<Integer> outStack;//实现出队功能的弹栈

    public offer09() {//构造方法初始化
enStack=new Stack<>();
outStack=new Stack<>();
    }

    public void appendTail(int value) {//在enStack中入栈
         enStack.push(value);
    }

    public int deleteHead() {//在outStack中弹栈(弹栈的前提是栈里面有元素)
        //如果outStack为空
        if (outStack.isEmpty()){
            //就有判断enStack栈里面有没有元素  有元素拿到outStack栈中弹  没有直接返回-1
            if (enStack.isEmpty()){
                return -1;
            }else {
                while (!enStack.isEmpty()){
                    outStack.push(enStack.pop());//把enStack的一个个拿出来放进outStack
                }
            }

        }else {//如果outStack不为空 (这一步可以不写  但是为了思路清晰  我这里就写上)
            //TODO 直接弹嘛
          return  outStack.pop();//弹栈了就要返回回去   不然这里不返回那里返回  最后返回的数组里对不上
        }
        return outStack.pop();//弹栈把弹的元素返回
    }


    public static void main(String[] args) {
        offer09 offer09=new offer09();//构造为空   没有返回值null
        offer09.appendTail(3);//入队一个3   没有返回值null
        System.out.println(offer09.deleteHead());//出队             (会把3返回回来)
        System.out.println(offer09.deleteHead());//出队             没了 返回-1
        System.out.println(offer09.deleteHead());//出队             没了 返回-1




    }

}

5.测试结果:

6.力扣提交:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

团团kobebryant

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值