当前位置: 首页 > news >正文

数据结构模拟-用栈实现队列

用栈实现队列的基本操作,包括pop(), push(), empty(), peek().

可以用两个栈来实现,一个栈保存入队的一端,也就是队尾,一个栈保存出队的一端,也就是队首。当遇到出队pop()时,如果stack out不为空,直接出栈,如果为空,那么先将stack in栈中所有的元素移动到stack out中,由于两个栈先进后出的特性,相当于负负得正,正好将stack in栈中想反的先后顺序更正了过来。

232. 用栈实现队列 - 力扣(LeetCode)

参考代码如下:

class MyQueue {
private:
    stack<int> inSt;//队尾,入队
    stack<int> outSt;//队首,出队

public:
    MyQueue() {}

    void push(int x) { inSt.push(x); }//入队,加入stack in栈中

    int pop() {//出队,按照上述的逻辑过程
        if(outSt.empty()){
             while (!inSt.empty()) {
            outSt.push(inSt.top());
            inSt.pop();
        }
        }
       int res = outSt.top();
       outSt.pop();
        return res;
    }

    int peek() {//返回队首元素,复用pop()
        int res = this->pop();
        outSt.push(res);
        return res;
    }

    bool empty() {//两个栈都为空,说明队列为空
        return inSt.empty() && outSt.empty();
    }
};

/**
 * Your MyQueue object will be instantiated and called as such:
 * MyQueue* obj = new MyQueue();
 * obj->push(x);
 * int param_2 = obj->pop();
 * int param_3 = obj->peek();
 * bool param_4 = obj->empty();
 */

http://www.dtcms.com/a/88960.html

相关文章:

  • 搭建Redis主从集群
  • 学习c++多线程前,回顾一下Linux的多线程
  • Linux网络相关概念和重要知识(3)(TCP套接字编程、远程命令的实现)
  • C/S与B/S架构
  • this.centerDialogVisible = true this.$nextTick(()=>{ this.resetForm(); })
  • this(执行上下文)
  • 1 存储过程学习: 使用DMSQL程序的优点
  • 如果vue加载页面的时候,需要加载很多子vue ,能不能先加载一个,让页面处于能用的状态,多余的在后台加载。
  • Java 基础入门代码示例解析
  • 使用Python调用Jenkins Api之获取构建日志使用说明文档
  • SpringBoot 3.0之后为什么移除了spring.factories
  • 好好学Docker:基于Docker buildx构建多平台镜像【转载】
  • Python爬取微博签到数据(2025年3月更)
  • python的文件上传
  • 单片机 - RAM 与内存、ROM 与硬盘 之间的详细对比总结
  • 【MySQL】JDBC —— Java 连接 MySQL
  • Qt 隐式共享
  • Java「Deque」 方法详解:从入门到实战
  • 信息安全和病毒防护——入侵检测技术
  • selenium基本使用(二)九种定位方法
  • 深度优先搜索(DFS)在排列组合问题中的应用详解:C++实现与优化
  • 第一章,网络发展史///OSI七层模型
  • 【开题报告+论文+源码】基于SpringBoot+Vue的酒店餐饮管理系统设计与实现
  • CTF类题目复现总结-[羊城杯 2020]TCP_IP 1
  • 25. 策略模式
  • Java 编译 API(javax.tools 包)的使用方法及关键点总结,适用于在运行时动态编译 Java 代码
  • 【MySQL篇】DEPENDENT SUBQUERY(依赖性子查询)优化:从百秒到秒级响应的四种优化办法
  • 芋道 Spring Cloud Alibaba 消息队列 RocketMQ 入门
  • LeetCode 2255.统计是给定字符串前缀的字符串数目:使用库函数+计数
  • wordpress-网站百宝箱插件