用栈实现队列

思路:

栈是先进后出,队列是先进先出,所以只靠一个栈是不能实现队列的,但是两个栈就可以,一个栈s1用来模拟入队列,一个栈s2用来出队列,当需要pop和peek时,如果s2为空,则将s1里的元素又放进s2,因为放进s1的时候是先进后出,所以s1放进s2的时候又是后进先出,这样操作,相当于负负得正了,最后s2的栈顶元素,就是最先入s1的元素

class MyQueue {
    Stack<Integer> s1;
    Stack<Integer> s2;
    public MyQueue() {
        s1=new Stack<>();//用来模拟入队列
        s2=new Stack<>();//用来模拟出队列
    }
    public void push(int x) {
        s1.push(x);
    }
    public int pop() {
        if(empty()){//如果模拟队列为空
            return -1;
        }
        if(s2.isEmpty()){//如果s2为空
            int size=s1.size();
            for(int i=0;i<size;i++){
                s2.push(s1.pop());//将s1里面移动过来
            }
        }
        return s2.pop();//出队列
    }
    public int peek() {
        if(empty()){//如果模拟队列为空
            return -1;
        }
        if(s2.isEmpty()){//如果s2为空
            int size=s1.size();
            for(int i=0;i<size;i++){
                s2.push(s1.pop());//将s1里面移动过来
            }
        }
        return s2.peek();//获取队头元素
    }
    public boolean empty() {
        if(s1.isEmpty()&&s2.isEmpty()){
            return true;
        }else{
            return false;
        }
    }
}

相关推荐

  1. 实现队列

    2024-07-23 00:32:02       35 阅读
  2. leetcode-队列实现

    2024-07-23 00:32:02       56 阅读
  3. leetcode-实现队列

    2024-07-23 00:32:02       48 阅读
  4. 232.实现队列

    2024-07-23 00:32:02       34 阅读
  5. 队列实现(C)

    2024-07-23 00:32:02       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-23 00:32:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 00:32:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 00:32:02       45 阅读
  4. Python语言-面向对象

    2024-07-23 00:32:02       55 阅读

热门阅读

  1. 面了抖音算法岗,被疯狂拷打。。。

    2024-07-23 00:32:02       19 阅读
  2. 使用 kapt 注解生成依赖注入代码

    2024-07-23 00:32:02       13 阅读
  3. Android GlSurfaceView渲染YUV图形

    2024-07-23 00:32:02       16 阅读
  4. iview中Checkbox组件设置不勾选是0,勾选是1

    2024-07-23 00:32:02       14 阅读
  5. 数学基础 -- 导数伪装的极限之变量替换

    2024-07-23 00:32:02       12 阅读
  6. 2024.7.20-22学习日报

    2024-07-23 00:32:02       10 阅读
  7. Linux-查看dd命令进度

    2024-07-23 00:32:02       15 阅读
  8. 【Android Framewrok】Handler源码解析

    2024-07-23 00:32:02       14 阅读
  9. PCI总线域与处理器域

    2024-07-23 00:32:02       14 阅读
  10. 代码随想录 day 20 二叉树

    2024-07-23 00:32:02       17 阅读
  11. 学懂C语言系列(二):C程序结构

    2024-07-23 00:32:02       19 阅读
  12. StringBuilder类

    2024-07-23 00:32:02       12 阅读