stack1作为入队列的栈
stack2作为出队列的缓冲栈

栈是先进后出,队列是先进先出
入队列(stack1):x1 x2 x3 x4(底----顶)
出队列:
x1是最先进入的元素,在队列中应该最先出来,将stack1中的元素取出来放在stack2中,
(stack2):x4 x3 x2 x1(底----顶)
使用栈中的top取出第一个元素和pop

class CQueue {stack<int> stack1,stack2;
public:CQueue() {while (!stack1.empty()) {stack1.pop();}while (!stack2.empty()) {stack2.pop();}}void appendTail(int value) {stack1.push(value);}int deleteHead() {// 如果第二个栈为空,将第一个栈的元素倒在第二个栈里面if (stack2.empty()) {while (!stack1.empty()) {stack2.push(stack1.top());stack1.pop();}} //若是仍然为空则返回-1if (stack2.empty()) {return -1;} //不为空就取出这个元素else {int deleteItem = stack2.top();stack2.pop();return deleteItem;}}
};

两个栈实现队列的push-pop操作---C++相关推荐

  1. 【数据结构】栈与队列区分push pop offer poll containsKey put等

    目录 前言 正文 队列 栈 map集合 前言 算法中经常会用到栈和队列等数据结构 但是经常弄混他们的进与取的代码算法 此文主要是做一个区分度 用法以及注意事项详情可看我之前的文章 [数据结构]栈和队列 ...

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

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

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

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

  4. [剑指offer] 用两个栈实现队列

    本文首发于我的个人博客:尾尾部落 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解题思路 两个栈 stack1 和 stack2: push 动作都在 ...

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

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

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

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

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

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

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

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

  9. 《剑指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]*. ...

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

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

最新文章

  1. 让Oracle SQL Developer显示的时间包含时分秒
  2. python程序多次运行_[Python]在一段Python程序中使用多次事件循环
  3. 在线学习与离线学习如何区分
  4. IDEA配置Struts框架
  5. JEPaas代码_((列表)输入字段值而计算
  6. mysql dba 试题_mysql dba面试题及答案.docx
  7. imread函数 matlab_【MATLAB图像处理学习】1.读取和显示图片
  8. 第40课 儿歌《打老虎》-2021.08.10 《小学生C++趣味编程》
  9. 背景图怎么置于底层_Ps素材教程含有刻度的背景图
  10. CCF201903-4 消息传递接口(100分)【模拟】
  11. Java、JSP电子政务系统
  12. 关于计算机网络通信协议
  13. oracle罗马字符转数字,一些关于罗马字符的知识
  14. w10系统可以装2003服务器吗,WMP10如何安装在Win2003系统服务器上
  15. JOB DESCRIPTION
  16. 面试中如何回答“你的缺点是什么?”
  17. 电脑长期未用或深度放电,电池欠压充不上电(充电指示灯不亮)
  18. 业绩归因 绩效评估 - 各种收益率计算方法
  19. 如何用C++ 写Python模块扩展(一)
  20. 在wordpress开发的网站中添加在线客服咨询功能代码教程

热门文章

  1. 谷歌hotel finder结果融入到页面搜索
  2. Python学生信息管理系统图形化界面-老师端-学生端项目实现
  3. Kafka请求发送分析
  4. Jmeter接口请求Base64加解密
  5. 计算机设备维护保养和网络巡检,弱电设备的维护保养及巡检管理制度
  6. 如何修复“Windows/System32/Config/System中文件丢失或损坏”故障
  7. 【ArcGIS微课1000例】0063:ArcGIS Earth完美代替Google Earth(附安装包下载)
  8. 使用 Scrapy-Redis 进行分布式爬取
  9. 20160227.CCPP体系详解(0037天)
  10. 用php如何设置页边距_php-dompdf-仅在首页之后设置页边距