STL中的栈结构和队列结构
队列和栈都是线性结构,但他们都是受限的线性表,即他们的操作是线性表操作的子集,利用线性表作为栈和队列类的基类会大大减轻编程工作量,提高代码的重用性
栈结构————————头文件为<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中的栈结构和队列结构相关推荐
- 记一道面试题:STL两个栈实现一个队列。
面试题目 STL两个栈实现一个队列. 要求:只能使用栈的pop(),top()和push(),以及测试栈是否为空 empty()四个操作. 来实现队列的clear(), push(),pop(),ba ...
- 有苦有乐的算法 --- 使用栈结构实现队列结构
题目 栈实现队列 解析 两个栈,stack1,stack2 假如一组元素为[1,2,3,4,5], 先依次入stack1 在将stack1的所有数据出栈,在入stack2 注:stack1里的的数据一 ...
- C++小课堂:STL中的栈容器(stack)
栈很像我们的箱子,我们将衣服这些装进箱子,第一个拿出来的肯定是最顶上的那件衣服,栈也一样. 今天我们就来学习栈容器:stack 头文件:<stack> 之前介绍的vector其实是STL中 ...
- 日常学习随笔-数组、单链表、双链表三种形式实现队列结构的基本操作(源码注释)...
一.队列结构(本文侧重于源码实现,基础理论不多赘述) 和栈一样,队列(queue)也是表,然而使用队列是在一端插入数据,在另一端删除数据.这里插入就是入队(enqueue),删除就是(dequeue) ...
- 线性结构 —— 单调栈与单调队列
[单调栈] 1.原理 单调栈,就是栈内元素保持一定单调性(单调递增或单调递减)的栈,即从栈底到栈顶单调递增或递减. 对于单调递增的栈,如果栈为空或入栈元素值大于等于栈顶元素值,则入栈:否则,若入栈会破 ...
- 函数调用过程中的栈帧结构及其变化
前言:本文旨在从汇编代码的角度出发,分析函数调用过程中栈帧的变化. 栈帧的简单介绍: 当某个函数运行时,机器需要分配一定的内存去进行函数内的各种操作,这个过程中分配的那部分栈称为栈帧.下图描述了栈帧的 ...
- Java实现自定义队列和树结构_实现二叉树的层序遍历,说说Java中的队列结构(实现一个Java的队列)...
几次面试都被问到二叉树的层序遍历,需要用到队列这个数据结构,我一直想使用一个队列来实现,但是java里没有一种好的队列的数据结构,我又一次面试用ArrayList去当队列用,但是被面试官说到,是不对的 ...
- java 栈内存结构_JVM内存结构概念解析
一. Java 内存结构 Java代码运行在虚拟机上,虚拟机在运行过程将程序(也就是进程)所占有内存分为几个不同的数据区域.不同的区域有不同的职责. Java运行时内存结构图如下: Java运行时内存 ...
- c++ 优先队列_C/C++数据结构:队列结构最全解析!带你零基础入门队列结构
前言 上一章节针对于C语言栈结构做了解析,不清楚的可以回顾一下. 本章节主要针对于C语言的基础数据结构队列做以解析. 数据结构之队列 队列是一种特殊的 线性表 ,特殊之处在于它只允许在表的前端(fro ...
最新文章
- Linux 下 4 种实时监控日志文件的方法,总有一种适合你
- iOS 键盘遮挡输入框万能解决方案(多个输入框)
- 下列关于linux的进程,描述不正确的是,进程是资源管理的最小单位,2012年7月成人自考网络操作系统考试真题...
- 将C ++类型的属性公开给QML
- Python的小特别
- No module named ‘__main__.common‘; ‘__main__‘ is not a package
- pandas处理丢失数据与数据导入导出
- Oracle 9i 返回一个记录集的方法
- 2021款iPad Pro渲染图曝光:依旧采用双摄+激光雷达扫描仪
- 趣说单例模式——选班长
- 计算机组成原理自测题,计算机组成原理自测练习题
- 概率图模型之贝叶斯网络的理解与应用
- IT30: 30岁IT人CTOCIO职业生涯探讨(2009-2013)
- 计算机科学型,函数计算器1005B学生专用 多功能计算机科学函数型
- 上海巨人网络面试经历
- 快手磁力金牛和小店通的区别
- proxifier中文汉化版
- 2022 基于SpringBoot的API文档管理系统 接口文档管理系统
- 李白:下终南山过斛斯山人宿置酒
- 【历史上的今天】10 月 23 日:ipod 问世;谷歌推出 CSE 搜索服务;人机交互领域先驱诞生