使用双栈实现一个队列
在往上看到这样的题目:
大体的有如下几个思路:
1 一个栈维护队列的内容,当入队列的操作的时候就直接入s1栈,当出队列的时候就现将s1栈底以外的内容都push到s2中保存起来,将s1栈底返回后将s2内容在弹回来。
2 s1作为压栈之用,s2作为出栈之用。入队列的时候就直接检查s1中有无对象,没有检查s2,如果s2中有对象就将s2中值全部弹回s1,再将新的对象入栈。
3 最后一种与上面相同,不过栈的作用发生了改变。
这里就简单列出第二种的实现: (同理的,双队列实现栈也可以类似的实现,且方法也是类似的)
1 class Stack{ 2 //... 3 void push(int ); 4 int pop(); 5 int count(); 6 //... 7 }; 8 9 class Queue{ 10 public: 11 void enqueue(int ); 12 int dequeue(); 13 int count() const; 14 private: 15 Stack s1; 16 Stack s2; 17 }; 18 19 //1为入栈用,2作为出栈用 20 void Queue::enqueue(int obj) 21 { 22 if(s1.count() == 0 && s2.count() != 0){ 23 while(s2.count() != 0){ 24 s1.push(s2.pop()); 25 } 26 s1.push(obj); 27 }else{ 28 s1.push(obj); 29 } 30 } 31 32 int Queue::dequeue() 33 { 34 if(s2.count() == 0 && s1.count() != 0){ 35 while(s1.count() != 0){ 36 s2.push(s1.pop()); 37 } 38 return s2.pop(); 39 }else{ 40 if(s2.count() != 0) 41 return s2.pop(); 42 } 43 }
转载于:https://www.cnblogs.com/-wang-cheng/p/4900987.html
使用双栈实现一个队列相关推荐
- python 用两个栈实现一个队列
| 两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素 ...
- 多态指针访问虚函数不能被继承的类快速排序N皇后问题插入排序堆排序merge归并排序栈上生成对象两个栈实现一个队列...
多态 /*1. 要想实现覆盖(重写)父类必须声明为virtual,子类可以不声明为virtual.-->FunB()2. 派生类重写基类的虚函数实现多态,要求函数名.参数列表.返回值完全相同.( ...
- 【剑指offer】用两个栈实现一个队列
题目:两个栈实现一个队列. 栈的特点:先进后出,队列的特点是先进先出 思路:stack1放入数据:pop时,先判断stack2是否为空,如果不为空,直接pop,如果空,则push(stack1.pop ...
- 剑指offer五:两个栈实现一个队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. package com.jianzhioffer;import java.util.Stack;publ ...
- 两个栈实现一个队列,两个队列实现一个栈
题目:用两个栈实现一个队列,用两个队列实现一个栈. 首先要了解栈和队列这两种数据结构各自的特点,栈是一种后入先出(Last In First Out,LIFO)的数据结构,队列是一种先进先出(Firs ...
- java实现-两个栈实现一个队列和两个队列实现一个栈
1.两个栈实现一个队列 思路:压入元素直接入stack1,删除元素先判断stack2中是否为空,如果不为空直接弹出:为空则将stack1中的元素取出压入 stack2中再弹出. 代码: import ...
- python ——两个队列实现一个栈两个栈实现一个队列
1.两个队列实现一个栈 进栈:元素入队列A 出栈:判断如果队列A只有一个元素,则直接出队.否则,把队A中的元素出队并入队B,直到队A中只有一个元素,再直接出队.为了下一次继续操作,互换队A和队B. p ...
- 栈和队列之用2个栈实现一个队列
import java.util.Stack;/*** @author chenyu* 题目:编写一个类,用2个栈实现一个队列,支持队列的基本操作(add poll peek)* 思路:栈的特点是先进 ...
- 两个栈实现一个队列与两个队列实现一个栈
http://blog.csdn.net/z84616995z/article/details/19204529 两个栈实现一个队列: 原理方法:用一个栈为主栈,一个栈为辅助栈存放临时元素. 入队:将 ...
最新文章
- linux系统中删除文件夹
- java一个接口执行结束释放内存_java的灵魂--JVM虚拟机
- 洛谷3605 Promotion Counting
- 线性支持向量机完全理解版
- 找出那个数字出现3次的数字
- Linux shell sed awk
- fastadmin 后台view data-source关联报500错误问题
- Spring中的AOP(8)
- git ignore 某行
- Spark session 深入理解
- labelimg安装教程(小白都会)
- 怎么打开系统服务器,Win10怎么打开系统服务管理器 Win10打开系统服务管理器操作方法...
- 微信java精简版低内存_微信精简版apk下载-微信精简版低内存2016 安卓版_5577安卓网...
- 大学里大四的学生一般在干什么
- R语言使用lm函数构建线性回归模型、线性回归模型的诊断、使用influence.measures函数识别有影响力的观察值
- nabcd分析解谜类rpg游戏
- UDP 头部结构及协议特点
- 浅谈BGP主机与其他双线主机的区别
- TCP/IP详解学习笔记 这位仁兄写得太好了
- Java-数据结构:树,这份资料可帮你解决95%的问题
热门文章
- 在Windows中为文件添加“可执行”权限(chmod +x 文件名 不起作用)
- 蓝桥杯第八届省赛JAVA真题----迷宫
- jsp示例-response页面重定向
- 修复病毒破坏的文件关联并恢复程序图标
- python 取日期_python取出所有的日期
- zabbix中mysql连不上的排错_zabbix监控软件的使用排错
- 清除浮动php,CSS清除浮动
- vue防抖和节流是什么_JavaScript防抖与节流,你知道多少?
- stm32cubemx adc_STM32CubeMX__Exp5_ADC1_2CH_DMA_TIM3_Trig__简明指导文件__jyb
- mysql 执行计划_mysql执行计划