使用内部存储结构为栈的方法实现一个队列,要求实现该队列的如下方法:
1.push(x) : 将元素x压入队列中
2.pop() : 弹出(移除)队列头部元素
3.peek() : 返回队列头部元素(即为front)
4.empty() : 判断队列是否是空

栈的数据结构为先入后出,队列的数据结构为先入先出
使用栈来实现队列,同样想要让两者弹出的数据保持一直,内部的数据存储顺序是相反的;

可行的办法是维护一个临时栈,用来调换真正存储数据的栈中元素的存储顺序

实现如下:

void push(int x) {stack<int> tmp_data;/*维护一个临时栈,用来进行数据顺序的调换*/while (!data.empty()){tmp_data.push(data.top());data.pop();}tmp_data.push(x);while (!tmp_data.empty()){data.push(tmp_data.top());tmp_data.pop();}
}

测试代码如下:

#include <iostream>
#include <algorithm>
#include <stack>using namespace std;class My_queue {private:stack<int> data;public:void push(int x) {stack<int> tmp_data;while (!data.empty()){tmp_data.push(data.top());data.pop();}tmp_data.push(x);while (!tmp_data.empty()){data.push(tmp_data.top());tmp_data.pop();}}int pop() {int x = data.top();data.pop();return x;}/*返回队列头部元素*/int peek() {return data.top();}bool empty() {return data.empty();}
};int main() {My_queue q;cout << "construct the queue " << endl;int tmp;for (int i = 0;i < 5; ++i){cin >> tmp;q.push(tmp);}cout << "pop " << q.pop() << endl;cout << "peek " << q.peek() << endl;q.push(10);cout << "peek push '10' " << q.peek() << endl;return 0;
}

输出如下:

construct the queue
1 2 3 4 5
pop 5
peek 4
peek push '10' 10

C++的STL栈实现队列相关推荐

  1. 【数据结构-栈和队列】详解栈和队列(代码+STL+原理)

    一.栈的应用 栈是一种先进后出(FILO)的数据结构 1.1 栈的操作实现 清空(clear): // 栈的清空操作就是把栈顶top置为-1 void clear(){top=-1; } // 清空栈 ...

  2. 栈与队列在SGI STL的底层实现

    栈 栈提供push和pop等接口,不提供走访功能,也不提供迭代器. STL中栈不被归类为容器,而被归类为container adapter(容器适配器),这是因为栈是以底层容器完成其所有的工作,对外提 ...

  3. (hdu step 8.1.1)ACboy needs your help again!(STL中栈和队列的基本使用)

    题目: ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...

  4. 牛客竞赛语法入门班数组栈、队列和stl习题

    牛客竞赛语法入门班数组栈.队列和stl习题 L 指纹锁 set ,自带排序功能 可重写排序函数 cmp,注意外边写的要写成 operator()operator()operator(),结构体内部的排 ...

  5. 第十章 基本数据结构——栈和队列

    摘要 本章介绍了几种基本的数据结构,包括栈.队列.链表以及有根树,讨论了使用指针的简单数据结构来表示动态集合.本章的内容对于学过数据结构的人来说,没有什么难处,简单的总结一下. 1.栈和队列 栈和队列 ...

  6. 算法题复习(栈与队列、二叉树)

    目录 栈与队列 栈用于匹配的问题 队列用于堆 二叉树系列 深度遍历,递归与迭代 层序遍历 二叉树属性 二叉树修改与构造 二叉搜索树 公共祖先 二叉搜索树的修改与构造 栈与队列 栈用于匹配的问题 20. ...

  7. 数据结构03栈和队列

    第三章栈和队列 STL 栈:stack http://blog.csdn.net/weixin_37289816/article/details/54773495 队列: queue  http:// ...

  8. 【LeetCode】分类刷题 之 栈和队列

    STL 栈:std::stack<int> S; S.top() S.empty() S.push(x) S.pop() S.size() 队列:std:queue<int> ...

  9. 线性结构 —— 栈与队列

    [概述] stack 和 queue 是在程序设计中经常会用到的数据容器,STL 提供了方便的堆栈.队列的实现,准确地说,STL 中的 stack 与 queue 不同于 pair.vector 等容 ...

最新文章

  1. 学到了!程序员大神用这招让开发效率直接提升 10 倍!!
  2. 安卓高手之路之(架构设计)
  3. hdu1722 切蛋糕
  4. BZOJ3435[Wc2014]紫荆花之恋——动态点分治(替罪羊式点分树套替罪羊树)
  5. MySQL 删除数据的最好的方式
  6. UVA 11825 Hackers' Crackdown 状态DP
  7. 微信小程序怎么弄成链接_自己怎么弄微信小程序?
  8. 让UI设计显得魅力非凡,设计师少不了的渐变背景素材专辑,
  9. Android优化方案之--Fragment的懒加载实现
  10. 静态代理,动态代理,Cglib代理详解
  11. 【转】给网站添加X-UA-Compatible标签
  12. UniCode 常用字符大全
  13. 机器学习(十)——支持向量机
  14. 电脑重装系统步骤图解,简单安全一目了然
  15. 质数 素数 合数 闰年 回文
  16. 2021年G3锅炉水处理模拟考试及G3锅炉水处理考试试题
  17. 商业银行vh是哪个银行的简称_各个银行缩写是什么
  18. Gartner2015新兴技术炒作曲线图
  19. POJ3295 Tautology
  20. 这是一篇系统的追热点方法论

热门文章

  1. MySQL计算指标连续两月金额相比_20160929
  2. java 流的概念_举例讲解Java中的Stream流概念
  3. proxmox 宕机转义_Proxmox+Ceph的HCI环境搭建
  4. linux文件编辑操作,Linux下文本编辑及其文件操作
  5. sign函数的功能oracle,Oracle中sign函数和decode函数的使用
  6. 机器人最大的人类士人禾力积木_开化县华埠镇中心小学:积木机器人好玩儿~~...
  7. linux 多目录makefile,royalchen
  8. Pycharm问题归纳
  9. keras 的 example 文件 imdb_fasttext.py 解析
  10. 机器学习(2)特征提取1 -- 字典特征提取