2020-05-08

1.题目描述

用两个栈实现一个队列

2.题解

将一个栈用来进行入操作,另一个进行出操作,入栈直接入,出栈的时候如果是空的则把另一个
栈中的所有元素移动过来,再进行出栈,否则直接出栈即可。

3.代码

面试题 03.04.

class MyQueue {
public:/** Initialize your data structure here. */MyQueue() {}/** Push element x to the back of queue. */void push(int x) {s1.push(x);}/** Removes the element from in front of queue and returns that element. */int pop() {if (s2.empty()){while (!s1.empty()){int t=s1.top();s1.pop();s2.push(t);}}int r=s2.top();s2.pop();return r;}/** Get the front element. */int peek() {if (s2.empty()){while (!s1.empty()){int t=s1.top();s1.pop();s2.push(t);}}return s2.top();}/** Returns whether the queue is empty. */bool empty() {if (s1.empty()&&s2.empty()) return true;return false;}stack<int> s1,s2;// s1专门用来入栈,s2专门用来出栈
};/*** 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();*/

面试题09.

class CQueue {
public:CQueue() {}void appendTail(int value) {s1.push(value);}int deleteHead() {if (s1.empty()&&s2.empty()) return -1;if (s2.empty()){while (!s1.empty()){s2.push(s1.top());s1.pop();}}int t=s2.top();s2.pop();return t;}stack<int> s1,s2;
};/*** Your CQueue object will be instantiated and called as such:* CQueue* obj = new CQueue();* obj->appendTail(value);* int param_2 = obj->deleteHead();*/
class MyQueue {
public:/** Initialize your data structure here. */MyQueue() {}/** Push element x to the back of queue. */void push(int x) {s1.push(x);}/** Removes the element from in front of queue and returns that element. */int pop() {if (s2.empty()){while (!s1.empty()){s2.push(s1.top());s1.pop();}}int t=s2.top();s2.pop();return t;}/** Get the front element. */int peek() {if (s2.empty()){while (!s1.empty()){s2.push(s1.top());s1.pop();}}return s2.top();}/** Returns whether the queue is empty. */bool empty() {if (s1.empty()&&s2.empty()) return true;return false;}stack<int>s1,s2;
};/*** 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();*/

面试题 03.04. 化栈为队/面试题09. 用两个栈实现队列/232. 用栈实现队列相关推荐

  1. 全国计算机等级考试一级模拟试题03,全国计算机等级考试一级模拟试题03

    全国计算机等级考试一级模拟试题03 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 全国计算机等级考试一级模拟试题031.通常人们说& ...

  2. 【前端面试题】04—33道基础CSS3面试题

    伴随着大量让人欣喜的功能加入HTML5,CSS3也同样为我们带来了更加绚丽的样式效果. 而CSS3面试题主要考察的仍然是那些已经应用在项目中的样式属性,以及应用过程中的一些常见问题,这些知识点是我们要 ...

  3. 【前端面试题】04—33道基础CSS3面试题(附答案)

    伴随着大量让人欣喜的功能加入HTML5,CSS3也同样为我们带来了更加绚丽的样式效果. 而CSS3面试题主要考察的仍然是那些已经应用在项目中的样式属性,以及应用过程中的一些常见问题,这些知识点是我们要 ...

  4. lc[栈与队列]---232.用栈实现队列

    一.题目简述 原先的个人思路: 用两个栈,一个作为主操作栈,另一个作为临时操作栈,push全在主操作栈进行.pop就需要临时借用一下tmp栈,全倒在临时操作栈中,然后在临时操作栈中pop,然后再全部倒 ...

  5. step3 . day4 数据结构之线性表 栈和队

    补充一下:循环链表初学可能不好理解,除了多画图以外,把循环链表想象成无限的单向(或者双向)链表,每一个元素都是中间元素,就更好理解了. 1.栈和队是线性表的两种特殊管理逻辑,两者都是线性表 2.栈的原 ...

  6. 两个栈实现一个队列与两个队列实现一个栈

    http://blog.csdn.net/z84616995z/article/details/19204529 两个栈实现一个队列: 原理方法:用一个栈为主栈,一个栈为辅助栈存放临时元素. 入队:将 ...

  7. 【数据结构】栈和队列OJ练习(栈和队列相互实现+循环队列实现)

    目录 前言 1.用队列实现栈 2.用栈实现队列 3.循环队列 前言 前面在学习了栈和队列的实现之后,相信大家对栈和队列的结构和使用方式都有了一些理解. 下面我们就来进行一些练习,这这章的练习相对于原来 ...

  8. 面试题 03.05. 栈排序

    面试题 03.05. 栈排序 思路:2个栈,data存储顺序,help帮助data存储排序 class SortedStack { public:stack<int> data, help ...

  9. 面试题 03.02. 栈的最小值

    面试题 03.02. 栈的最小值 思路:两个栈,一个存数据,一个存当前最小值 class MinStack { public:stack<int> s1;stack<int> ...

最新文章

  1. Django模型之数据库操作-查询
  2. CENTOS6.5安装日志分析ELK elasticsearch + logstash + redis + kibana
  3. continue和pass測试
  4. Navicat 远程连接ubuntu出现的问题
  5. 欢乐纪中某A组赛【2019.7.10】
  6. 概率论笔记:随机数、概率分布(正态分布)、中心极限定理(大数定理)
  7. ajax请求会阻塞dom,Jquery ajax 同步阻塞引起的UI线程阻塞问题_jquery
  8. 杭电ACM 第2007题
  9. Mac不能复制拷贝写入文件到移动硬盘,U盘怎么办
  10. gps校正 android,通过GPS时间同步Android设备?
  11. SpringDataJPA(二):SpringDataJPA的运行原理以及基本操作
  12. 3D Max一些基本认识
  13. 机器学习实战之朴素贝叶斯与垃圾邮件分类
  14. 肖博老师高中数学必备知识点总结最全版
  15. acwing 2058. 笨拙的手指
  16. 北京8成楼盘降价促销 房价已下跌10%-15%
  17. 腾讯企业邮箱单点登录无需帐号密码
  18. element ui table的show-overflow-tooltip属性以及设置其宽度
  19. [XCTF-pwn] 31_ciscn-2018-Quals_house_of_grey
  20. OBS推流时的视频色彩相关参数设置

热门文章

  1. 新鲜出炉 | 临床基因组学数据分析实战开课啦!!!
  2. 如果你是一位资深的玩机人士,那么你不能错过它——uTools
  3. 第94课 函数的参数 《小学生C++编程入门》 例94.1
  4. Intellij IDEA的java环境与安卓sdk配置实例教程
  5. Keil | 解决Keil与Source Insight4.0配合使用时,代码与注释位置(乱码)不一样的问题
  6. STM32H743+CubeMX-两路FDCAN同时工作的终极方案(RTX5)
  7. 文件管理软件 云服务器,使用KDE Plasma文件管理器(Dolphin)连接到Linux上的服务器...
  8. 图片在section上下居中_新媒体运营者关于图片使用的几大要点
  9. Android逆向笔记-查看app的log打印(含调试方式打开)
  10. Qt文档阅读笔记-GridLayout QML Type解析与实例