在往上看到这样的题目:

大体的有如下几个思路:

  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

使用双栈实现一个队列相关推荐

  1. python 用两个栈实现一个队列

    | 两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素 ...

  2. 多态指针访问虚函数不能被继承的类快速排序N皇后问题插入排序堆排序merge归并排序栈上生成对象两个栈实现一个队列...

    多态 /*1. 要想实现覆盖(重写)父类必须声明为virtual,子类可以不声明为virtual.-->FunB()2. 派生类重写基类的虚函数实现多态,要求函数名.参数列表.返回值完全相同.( ...

  3. 【剑指offer】用两个栈实现一个队列

    题目:两个栈实现一个队列. 栈的特点:先进后出,队列的特点是先进先出 思路:stack1放入数据:pop时,先判断stack2是否为空,如果不为空,直接pop,如果空,则push(stack1.pop ...

  4. 剑指offer五:两个栈实现一个队列

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

  5. 两个栈实现一个队列,两个队列实现一个栈

    题目:用两个栈实现一个队列,用两个队列实现一个栈. 首先要了解栈和队列这两种数据结构各自的特点,栈是一种后入先出(Last In First Out,LIFO)的数据结构,队列是一种先进先出(Firs ...

  6. java实现-两个栈实现一个队列和两个队列实现一个栈

    1.两个栈实现一个队列 思路:压入元素直接入stack1,删除元素先判断stack2中是否为空,如果不为空直接弹出:为空则将stack1中的元素取出压入 stack2中再弹出. 代码: import ...

  7. python ——两个队列实现一个栈两个栈实现一个队列

    1.两个队列实现一个栈 进栈:元素入队列A 出栈:判断如果队列A只有一个元素,则直接出队.否则,把队A中的元素出队并入队B,直到队A中只有一个元素,再直接出队.为了下一次继续操作,互换队A和队B. p ...

  8. 栈和队列之用2个栈实现一个队列

    import java.util.Stack;/*** @author chenyu* 题目:编写一个类,用2个栈实现一个队列,支持队列的基本操作(add poll peek)* 思路:栈的特点是先进 ...

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

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

最新文章

  1. linux系统中删除文件夹
  2. java一个接口执行结束释放内存_java的灵魂--JVM虚拟机
  3. 洛谷3605 Promotion Counting
  4. 线性支持向量机完全理解版
  5. 找出那个数字出现3次的数字
  6. Linux shell sed awk
  7. fastadmin 后台view data-source关联报500错误问题
  8. Spring中的AOP(8)
  9. git ignore 某行
  10. Spark session 深入理解
  11. labelimg安装教程(小白都会)
  12. 怎么打开系统服务器,Win10怎么打开系统服务管理器 Win10打开系统服务管理器操作方法...
  13. 微信java精简版低内存_微信精简版apk下载-微信精简版低内存2016 安卓版_5577安卓网...
  14. 大学里大四的学生一般在干什么
  15. R语言使用lm函数构建线性回归模型、线性回归模型的诊断、使用influence.measures函数识别有影响力的观察值
  16. nabcd分析解谜类rpg游戏
  17. UDP 头部结构及协议特点
  18. 浅谈BGP主机与其他双线主机的区别
  19. TCP/IP详解学习笔记 这位仁兄写得太好了
  20. Java-数据结构:树,这份资料可帮你解决95%的问题

热门文章

  1. 在Windows中为文件添加“可执行”权限(chmod +x 文件名 不起作用)
  2. 蓝桥杯第八届省赛JAVA真题----迷宫
  3. jsp示例-response页面重定向
  4. 修复病毒破坏的文件关联并恢复程序图标
  5. python 取日期_python取出所有的日期
  6. zabbix中mysql连不上的排错_zabbix监控软件的使用排错
  7. 清除浮动php,CSS清除浮动
  8. vue防抖和节流是什么_JavaScript防抖与节流,你知道多少?
  9. stm32cubemx adc_STM32CubeMX__Exp5_ADC1_2CH_DMA_TIM3_Trig__简明指导文件__jyb
  10. mysql 执行计划_mysql执行计划