准备两个栈,一个是压入栈,一个是弹出栈。每次操作时,看看弹出栈是否为空,为空时,将压入栈的数据全放入弹出栈。

/*==============================================================**   Copyright (C) All rights reserved.*   *   文件名称:*   创 建 者:徐永琪*   创建日期:2022年04月01日*   描    述:两个栈实现队列*================================================================*/
#include <stack>
#include <iostream>
/*by xuyongqi*/using namespace std;class two_stacks_implement_queue
{private:stack<int> stack_push;stack<int> stack_pop;void push_to_pop();
public:void push(int data);void pop();int top();bool empty();
};
void two_stacks_implement_queue::push_to_pop()
{/*当弹出栈为空时,把压入栈的数据全放入弹出栈*/if (stack_pop.empty()){while (!stack_push.empty()){stack_pop.push(stack_push.top());stack_push.pop();}}
}void two_stacks_implement_queue::push(int data)
{stack_push.push(data);push_to_pop();
}void two_stacks_implement_queue::pop()
{push_to_pop();stack_pop.pop();
}int two_stacks_implement_queue::top()
{push_to_pop();return stack_pop.top();
}
bool two_stacks_implement_queue::empty()
{return stack_push.empty() && stack_pop.empty();
}int main()
{two_stacks_implement_queue *q = new two_stacks_implement_queue;q->push(1);q->push(2);q->push(3);q->push(4);q->push(5);while (!q->empty()){cout<<" top :"<<q->top()<<endl;q->pop();}delete q;q = nullptr;return 0;
}
/* printtop :1top :2top :3top :4top :5
*/

c++ 两个栈实现队列相关推荐

  1. 剑指offer:面试题09. 用两个栈实现队列

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

  2. 剑指offer_第5题_用两个栈实现队列

    题目描述 用两个栈来实现一个队列 完成队列的Push和Pop操作 队列中的元素为int类型 理解 关于栈 什么是栈 栈的抽象数据类型 Python实现栈 关于队列 什么是队列 队列抽象数据类型 Pyt ...

  3. 《LeetCode力扣练习》剑指 Offer 09. 用两个栈实现队列 Java

    <LeetCode力扣练习>剑指 Offer 09. 用两个栈实现队列 Java 一.资源 题目: 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 de ...

  4. 剑指Offer #05 用两个栈实现队列(模拟)

    题目来源:牛客网-剑指Offer专题 题目地址:用两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 题目解析 首先,我们需要知道一下基本知 ...

  5. 【干货】容器适配器实现两个栈模拟队列

    用两个栈模拟队列的思想就是"倒水思想",这里我们用自定义类型模拟出线性表,再用线性表做容器实现栈的数据结构,最后用栈来实现队列,代码如下: #include<iostream ...

  6. 剑指offer第二版-9.用两个栈实现队列

    描述:使用两个栈实现一个队列.队列中实现尾部插入和头部删除函数. 思路:stack1负责插入,stack2负责弹出,如果stack2为空了,将stack1的元素依次弹出并存放到stack2中,之后对s ...

  7. 《剑指offer》-- 构建乘积数组、求1+2+3+...+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列

    一.构建乘积数组: 1.题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*. ...

  8. 《剑指offer》第九题(用两个栈实现队列)

    // 面试题:用两个栈实现队列 // 题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail // 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的 ...

  9. 栈一:用两个栈实现队列

    /**  * 题目:用两个栈实现队列  * 描述:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.  * 解决方案:方法一:一个作为存储用,一个作为弹出用  * * ...

  10. java 栈和队列实现迷宫代码_LeetCode每日一题--剑指 Offer 09. 用两个栈实现队列(Java)

    DailyChallenge 剑指 Offer 09. 用两个栈实现队列 Easy20200630 Description 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTai ...

最新文章

  1. C/C++中*和的用法详解
  2. 电脑f2还原系统步骤_手把手教你如何创建系统还原点,让你的电脑也能时光倒流...
  3. RHEL6   Kickstart 无人值守安装
  4. MSSQL 2005 分页分析及优化
  5. linux简介ubuntu,Linux文件系统简介(基于Ubuntu)
  6. java11 scala_JDK1.10+scala环境的搭建之windows环境
  7. 存储单位 KB MB bit
  8. zzuli OJ 1047: 对数表
  9. 红米k20pro短接9008_拆解红米Redmi K20Pro,内部结果一目了然
  10. 禅道服务器修改ip,访问禅道服务器的ip地址
  11. CTF warmup
  12. 动态密码算法介绍与实现
  13. Java面试之JVM
  14. Python分布式爬虫原理
  15. 硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍
  16. 数数字(Digit Counting)
  17. 2021年全球与中国不锈钢反应堆行业市场规模及发展前景分析
  18. mysql非安装_mysql非安装版的装配
  19. python日历模块_Python日历模块总结
  20. MultipleOutputFormat和MultipleOutputs

热门文章

  1. 机器学习入门篇——感知器
  2. 一加七语音唤醒_一加8t有语音助手吗
  3. 学会python可以做自己想做的事----用Python给你喜欢的音乐分个类吧
  4. python找出数组重复_在Python中使用位数组查找数组的重复项
  5. GPS时间序列分析(三)matlab语言分析
  6. 计算机辅助工程缩写是什么,用来表示计算机辅助工程的英文缩写是
  7. vivo X9 Plus的USB调试模式在哪里,打开vivo X9 PlusUSB调试模式的流程
  8. KKB : MySQL创建千万测试数据
  9. Mac使用技巧:解决iPhone卡顿、变慢的问题
  10. C# 自动按比例裁剪去除图片色边(一般是黑边或者白边)