队列和栈都是线性结构,但他们都是受限的线性表,即他们的操作是线性表操作的子集,利用线性表作为栈和队列类的基类会大大减轻编程工作量,提高代码的重用性

栈结构————————头文件为<stack>

栈是后进先出的线性表。

empty()    //判断堆栈是否为空,若为空则返回真,若不为空,则返回假

pop()     //移除栈顶元素

push()      //在栈顶压入元素

top()     //返回栈顶元素

例题:

//栈是后进先出的线性表    许多软件中的撤销和恢复功能都是用栈实现的
//STL中的栈结构
#include<cstdio>
#include<iostream>
#include<stack>
#include<algorithm>using namespace std;int main()
{stack<int>st;    //整型STL栈类对象for(int n = 1; n <=5; n++)st.push(n);        //将n压入st的栈顶cout << "栈中有" << st.size() << "个元素" <<endl;while(!st.empty()){cout << st.top() <<' ';   //获取st的栈顶元素并输出 st.pop();       //弹出st的栈顶元素(不保存) } cout << endl;
} 

堆栈的应用:

根据其特点,可以将堆栈运用到进位制转换上。如十进制数m转换为n进制时,将m连续除以n,所得余数依次是由低位到高位的值

//根据堆栈先进后出的特点,可以将此运用在进位制转化上
#include<stack>
#include<iostream>
#include<string>
#include<vector>
#include<list>
#include<cstdio>using namespace std;void Conversion(int m, int n)
{int e;char c;stack<int>st;while(m > 0){e = m%n;st.push(e);m = m/n;}while(!st.empty()){e = st.top();st.pop();if(e <= 9){cout << e;}else{c = e + 55;cout << c; }}cout << endl;
}int main()
{int m, n;cin >> m >> n;Conversion(m, n);  //进位制转化
}

队列————————STL队列结构

队列是先进先出的线性表,即限定只能在队尾进行入队操作,在对头进行出对的操作

在c++的STL(标准模版库)提供了队列类的操作,共有三种:queue(队列),deque(双端队列),priority_queue(优先队列)

#include<queue>
#include<cstdio>
#include<iostream>
#include<algorithm>using namespace std;int main()
{queue<int>q;   //整型STL队列类对象for(int n = 1; n <=5; n++)q.push(n);       //将每一个n进行入队操作 cout << "队尾元素为" << q.back() << endl;  //获取队尾元素并输出while(!q.empty()){cout << q.front() << ' ';q.pop();} cout << endl;cout << "现在对头有" << q.size() << "元素";
} 

STL中的栈结构和队列结构相关推荐

  1. 记一道面试题:STL两个栈实现一个队列。

    面试题目 STL两个栈实现一个队列. 要求:只能使用栈的pop(),top()和push(),以及测试栈是否为空 empty()四个操作. 来实现队列的clear(), push(),pop(),ba ...

  2. 有苦有乐的算法 --- 使用栈结构实现队列结构

    题目 栈实现队列 解析 两个栈,stack1,stack2 假如一组元素为[1,2,3,4,5], 先依次入stack1 在将stack1的所有数据出栈,在入stack2 注:stack1里的的数据一 ...

  3. C++小课堂:STL中的栈容器(stack)

    栈很像我们的箱子,我们将衣服这些装进箱子,第一个拿出来的肯定是最顶上的那件衣服,栈也一样. 今天我们就来学习栈容器:stack 头文件:<stack> 之前介绍的vector其实是STL中 ...

  4. 日常学习随笔-数组、单链表、双链表三种形式实现队列结构的基本操作(源码注释)...

    一.队列结构(本文侧重于源码实现,基础理论不多赘述) 和栈一样,队列(queue)也是表,然而使用队列是在一端插入数据,在另一端删除数据.这里插入就是入队(enqueue),删除就是(dequeue) ...

  5. 线性结构 —— 单调栈与单调队列

    [单调栈] 1.原理 单调栈,就是栈内元素保持一定单调性(单调递增或单调递减)的栈,即从栈底到栈顶单调递增或递减. 对于单调递增的栈,如果栈为空或入栈元素值大于等于栈顶元素值,则入栈:否则,若入栈会破 ...

  6. 函数调用过程中的栈帧结构及其变化

    前言:本文旨在从汇编代码的角度出发,分析函数调用过程中栈帧的变化. 栈帧的简单介绍: 当某个函数运行时,机器需要分配一定的内存去进行函数内的各种操作,这个过程中分配的那部分栈称为栈帧.下图描述了栈帧的 ...

  7. Java实现自定义队列和树结构_实现二叉树的层序遍历,说说Java中的队列结构(实现一个Java的队列)...

    几次面试都被问到二叉树的层序遍历,需要用到队列这个数据结构,我一直想使用一个队列来实现,但是java里没有一种好的队列的数据结构,我又一次面试用ArrayList去当队列用,但是被面试官说到,是不对的 ...

  8. java 栈内存结构_JVM内存结构概念解析

    一. Java 内存结构 Java代码运行在虚拟机上,虚拟机在运行过程将程序(也就是进程)所占有内存分为几个不同的数据区域.不同的区域有不同的职责. Java运行时内存结构图如下: Java运行时内存 ...

  9. c++ 优先队列_C/C++数据结构:队列结构最全解析!带你零基础入门队列结构

    前言 上一章节针对于C语言栈结构做了解析,不清楚的可以回顾一下. 本章节主要针对于C语言的基础数据结构队列做以解析. 数据结构之队列 队列是一种特殊的 线性表 ,特殊之处在于它只允许在表的前端(fro ...

最新文章

  1. Linux 下 4 种实时监控日志文件的方法,总有一种适合你
  2. iOS 键盘遮挡输入框万能解决方案(多个输入框)
  3. 下列关于linux的进程,描述不正确的是,进程是资源管理的最小单位,2012年7月成人自考网络操作系统考试真题...
  4. 将C ++类型的属性公开给QML
  5. Python的小特别
  6. No module named ‘__main__.common‘; ‘__main__‘ is not a package
  7. pandas处理丢失数据与数据导入导出
  8. Oracle 9i 返回一个记录集的方法
  9. 2021款iPad Pro渲染图曝光:依旧采用双摄+激光雷达扫描仪
  10. 趣说单例模式——选班长
  11. 计算机组成原理自测题,计算机组成原理自测练习题
  12. 概率图模型之贝叶斯网络的理解与应用
  13. IT30: 30岁IT人CTOCIO职业生涯探讨(2009-2013)
  14. 计算机科学型,函数计算器1005B学生专用 多功能计算机科学函数型
  15. 上海巨人网络面试经历
  16. 快手磁力金牛和小店通的区别
  17. proxifier中文汉化版
  18. 2022 基于SpringBoot的API文档管理系统 接口文档管理系统
  19. 李白:下终南山过斛斯山人宿置酒
  20. 【历史上的今天】10 月 23 日:ipod 问世;谷歌推出 CSE 搜索服务;人机交互领域先驱诞生

热门文章

  1. HashSet源码分析
  2. bootstrap下拉列表与输入框组结合的样式调整
  3. 移动端开发高清效果和多屏适配
  4. Emmet插件:HTML/CSS代码快速编写神器
  5. 转:开火,移动-大神Joel 也浮躁
  6. Oracle私房菜之安装Oracle 11g
  7. SAPscripts 到导数程序中取数据的实例
  8. Linux通过kaggle api下载kaggle数据集
  9. 在线实时大数据平台Storm集群组件学习
  10. 1.9 函数-C++编程模块