面试题 03.04. 化栈为队/面试题09. 用两个栈实现队列/232. 用栈实现队列
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. 用栈实现队列相关推荐
- 全国计算机等级考试一级模拟试题03,全国计算机等级考试一级模拟试题03
全国计算机等级考试一级模拟试题03 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 全国计算机等级考试一级模拟试题031.通常人们说& ...
- 【前端面试题】04—33道基础CSS3面试题
伴随着大量让人欣喜的功能加入HTML5,CSS3也同样为我们带来了更加绚丽的样式效果. 而CSS3面试题主要考察的仍然是那些已经应用在项目中的样式属性,以及应用过程中的一些常见问题,这些知识点是我们要 ...
- 【前端面试题】04—33道基础CSS3面试题(附答案)
伴随着大量让人欣喜的功能加入HTML5,CSS3也同样为我们带来了更加绚丽的样式效果. 而CSS3面试题主要考察的仍然是那些已经应用在项目中的样式属性,以及应用过程中的一些常见问题,这些知识点是我们要 ...
- lc[栈与队列]---232.用栈实现队列
一.题目简述 原先的个人思路: 用两个栈,一个作为主操作栈,另一个作为临时操作栈,push全在主操作栈进行.pop就需要临时借用一下tmp栈,全倒在临时操作栈中,然后在临时操作栈中pop,然后再全部倒 ...
- step3 . day4 数据结构之线性表 栈和队
补充一下:循环链表初学可能不好理解,除了多画图以外,把循环链表想象成无限的单向(或者双向)链表,每一个元素都是中间元素,就更好理解了. 1.栈和队是线性表的两种特殊管理逻辑,两者都是线性表 2.栈的原 ...
- 两个栈实现一个队列与两个队列实现一个栈
http://blog.csdn.net/z84616995z/article/details/19204529 两个栈实现一个队列: 原理方法:用一个栈为主栈,一个栈为辅助栈存放临时元素. 入队:将 ...
- 【数据结构】栈和队列OJ练习(栈和队列相互实现+循环队列实现)
目录 前言 1.用队列实现栈 2.用栈实现队列 3.循环队列 前言 前面在学习了栈和队列的实现之后,相信大家对栈和队列的结构和使用方式都有了一些理解. 下面我们就来进行一些练习,这这章的练习相对于原来 ...
- 面试题 03.05. 栈排序
面试题 03.05. 栈排序 思路:2个栈,data存储顺序,help帮助data存储排序 class SortedStack { public:stack<int> data, help ...
- 面试题 03.02. 栈的最小值
面试题 03.02. 栈的最小值 思路:两个栈,一个存数据,一个存当前最小值 class MinStack { public:stack<int> s1;stack<int> ...
最新文章
- Django模型之数据库操作-查询
- CENTOS6.5安装日志分析ELK elasticsearch + logstash + redis + kibana
- continue和pass測试
- Navicat 远程连接ubuntu出现的问题
- 欢乐纪中某A组赛【2019.7.10】
- 概率论笔记:随机数、概率分布(正态分布)、中心极限定理(大数定理)
- ajax请求会阻塞dom,Jquery ajax 同步阻塞引起的UI线程阻塞问题_jquery
- 杭电ACM 第2007题
- Mac不能复制拷贝写入文件到移动硬盘,U盘怎么办
- gps校正 android,通过GPS时间同步Android设备?
- SpringDataJPA(二):SpringDataJPA的运行原理以及基本操作
- 3D Max一些基本认识
- 机器学习实战之朴素贝叶斯与垃圾邮件分类
- 肖博老师高中数学必备知识点总结最全版
- acwing 2058. 笨拙的手指
- 北京8成楼盘降价促销 房价已下跌10%-15%
- 腾讯企业邮箱单点登录无需帐号密码
- element ui table的show-overflow-tooltip属性以及设置其宽度
- [XCTF-pwn] 31_ciscn-2018-Quals_house_of_grey
- OBS推流时的视频色彩相关参数设置
热门文章
- 新鲜出炉 | 临床基因组学数据分析实战开课啦!!!
- 如果你是一位资深的玩机人士,那么你不能错过它——uTools
- 第94课 函数的参数 《小学生C++编程入门》 例94.1
- Intellij IDEA的java环境与安卓sdk配置实例教程
- Keil | 解决Keil与Source Insight4.0配合使用时,代码与注释位置(乱码)不一样的问题
- STM32H743+CubeMX-两路FDCAN同时工作的终极方案(RTX5)
- 文件管理软件 云服务器,使用KDE Plasma文件管理器(Dolphin)连接到Linux上的服务器...
- 图片在section上下居中_新媒体运营者关于图片使用的几大要点
- Android逆向笔记-查看app的log打印(含调试方式打开)
- Qt文档阅读笔记-GridLayout QML Type解析与实例