刚才做题碰到了这个有意思的题。
两个栈实现队列是《剑指offer》上的题,大家之前或许都有做过。
这道题有意思在栈的容量是受限的,求的是容量。

这道题应该再深入的思考下,

首先,到底如何用两个栈实现队列。

大家都知道栈是FILO,队列是FIFO。可真正该实现的是时候就不是简简单单的想 着把一个栈里的数据,存入另一个栈中,这样再取出来就是先进的先出了。
关键问题是何时将一个栈中的数据存入另一个栈
栈和队列的关键操作是push()pop(),前者负责压入一个数据,后者负责弹出。还有个top()/front()分别取栈顶/队首元素。那应该如何用俩栈实现队列的push()呢?

class DemoQueue
{stack<int> s1, s2;
public:void push(int val){//    s2.push(val);  直接存入第二个栈等着pop()? 连着存多个push()不就跟stack一样了么,显然不行。s1.push(val); // s2.push(val)   每push一次都要更新s2以使pop()能正常pop()? 显然也不行,要知道pop()的关键是要保证s2的top()时刻都是队列的队首 }//所以其实push只需压入数据给第一个栈就好了。void pop(){//那pop()就需要下功夫,要知道客户有可能在任何时候调用pop()if (s1.empty() && s2.empty())throw "Wtf";//首先,如果s2没有任何数据,那就

用俩个栈模拟实现一个队列,如果栈的容量分别是O和P(OP),那么模拟实现的队列最大容量是多少?相关推荐

  1. 用两个队列模拟实现一个栈的过程

    栈具有"后进先出"的特点,即某个元素最后进入栈,却最先出栈:队列具有"先进先出"的特点,即元素从队尾依次进队列,依次从队头出队列:现在用两个队列模拟实现一个栈的 ...

  2. 《剑指offer》c++版本 9. 用两个栈来实现一个队列

    如题: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 本题考察对数据结构队列,栈的理解.队列的特点是FIFO,先进先出.栈的特点是FILO,先进后出.题目要求我 ...

  3. 牛客网(剑指offer) 第五题 用两个栈来实现一个队列

    //用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. //方法一:没有用到栈 $queue=array(); function mypush($node) {glo ...

  4. 算法训练Day11 | LeetCode232. 用栈实现队列(模拟);225.用队列实现栈(模拟);20. 有效的括号(栈应用);1047. 删除字符串中的所有相邻重复项(栈应用)

    目录 LeetCode232.用栈实现队列 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 LeetCode225. 用队列实现栈 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 ...

  5. 代码随想录算法训练Day11 LeetCode232. 用栈实现队列(模拟);225.用队列实现栈(模拟);20. 有效的括号(栈应用);1047. 删除字符串中的所有相邻重复项(栈应用)

    代码随想录算法训练Day11 | LeetCode232. 用栈实现队列(模拟):225.用队列实现栈(模拟):20. 有效的括号(栈应用):1047. 删除字符串中的所有相邻重复项(栈应用) 关于栈 ...

  6. 化栈为队(两个栈来实现一个队列)

    实现一个MyQueue类,该类用两个栈来实现一个队列. 示例: MyQueue queue = new MyQueue();queue.push(1); queue.push(2); queue.pe ...

  7. LeetCode 232. Implement Queue using Stacks--用2个栈来实现一个队列--C++解法

    LeetCode 232. Implement Queue using Stacks–C++解法 LeetCode题解专栏:LeetCode题解 我做的所有的LeetCode的题目都放在这个专栏里,大 ...

  8. JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)

    最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...

  9. N5-用两个栈来实现一个队列

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. import java.util.Stack; /*** 用两个栈来实现一个队列,完成队列的Push和P ...

  10. 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. import java.util.Stack; public class Solution {      ...

最新文章

  1. Java设计模式:抽像工厂模式
  2. 执行计划--为查询指定查询计划
  3. mysql 5.7 centos 7_CentOS 7 下 MySQL 5.7 的安装与配置
  4. 工程搭建:搭建子工程之搭建环境构造返回实体类
  5. 【AI视野·今日NLP 自然语言处理论文速览 第十八期】Fri, 2 Jul 2021
  6. 10行Python代码搞定目标检测
  7. 腾讯 2016 春季实习校招二面回忆(C++后台)
  8. fps up up!!!
  9. 大数据分析常用的方法有哪些
  10. 编程一年来的疑惑和思考
  11. Code a simple telnet client using sockets in python
  12. python实现决策树ID3算法
  13. win10 搭建php服务器搭建,Win10平台下安装并配置php
  14. 远程管理(html),远程管理HTML
  15. 我的电子产品开发资料学习资料免费下载地址(超值超值。。。)
  16. Labview调用python
  17. 使用Bitvise SSH代理访问
  18. JS 数据容量转换/换算
  19. 浅谈什么是 云原生
  20. 用C语言来实现扫雷小游戏

热门文章

  1. 图像处理工具包ImagXpress的清理图像功能简介
  2. 如何将敏捷开发与V模型深度融合?这家企业给出答案
  3. OTC承兑平台系统源码 otc承兑商支付系统 区块链支付系统源码
  4. 【2022-04-22】通用新闻抽取器GNE-自动化爬虫通用解析器
  5. 9月CPI同比上涨1.6% 房租连涨57个月
  6. 02ServletHTTPRequestResponse
  7. 神经网络实用工具(整活)系列---使用OpenAI的翻译模型whisper实现语音(中、日、英等等)转中字,从此生肉变熟肉---基础篇
  8. 工业级环网交换机的优点
  9. 08_ue4进阶末日生存游戏开发[导入动画和骨骼]
  10. 2110-课前资料及授课说明