算法题之栈与队列:理论基础与常用操作接口

ops/2025/1/24 5:56:38/

栈与队列

(1)理论基础

栈:先进后出的数据结构

队列:先进先出的数据结构

栈提供push 和 pop 等等接口,所有元素必须符合先进后出规则,所以栈不提供走访功能,也不提供迭代器(iterator)。 不像是set 或者map 提供迭代器iterator来遍历所有元素。

栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使用哪种容器来实现栈的功能,STL中栈的底层实现可以是vector,deque,list 都是可以的, 主要就是数组和链表的底层实现)。

所以STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)。

队列中先进先出的数据结构,同样不允许有遍历行为,不提供迭代器, SGI STL中队列一样是以deque为缺省情况下的底部结构。

所以STL 队列也不被归类为容器,而被归类为container adapter( 容器适配器)。

std::stack<int, std::vector<int> > third;  // 使用vector为底层容器的栈
std::queue<int, std::list<int>> third; // 定义以list为底层容器的队列

(2)栈的常用接口

stack.push(x);//向栈中添加元素x
stack.pop();//移除栈顶元素
/*在使用时需要检查stack是否为空,否则访问到空栈的顶部元素,导致段错误*/
int result=stack.top();//返回栈顶的元素
bool is_empty=stack.empty();//判断栈是否为空
int size=stack.size();//获取栈的大小

(3)队列的常用接口

que.push(x);//向队列中添加元素x
que.pop();//移除队头第一个元素
int result=que.front();//返回第一个元素
int result=que.back();//返回最后一个元素
bool is_empty=que.empty();//判断栈是否为空
int size=que.size();//获取队列的大小

http://www.ppmy.cn/ops/152666.html

相关文章

【时时三省】(C语言基础)格式化输入输出函数

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 格式化输出函数 他需要用到fprintf 示例&#xff1a; 把一个格式化的数据如果写到文件里面 格式化输入函数 它需要用到fscanf函数 示例&#xff1a;

202112 青少年软件编程等级考试C/C++ 二级真题答案及解析(电子学会)

第 1 题 统计指定范围里的数 给定一个数的序列S,以及一个区间[L, R], 求序列中介于该区间的数的个数,即序列中大于等于L且小于等于R的数的个数。 时间限制:1000 内存限制:65536 输入 第一行1个整数n、,分别表示序列的长度。(0 < n ≤ 10000) 第二行n个正整数,表…

Kotlin 2.1.0 入门教程(八)

Lambda 表达式和匿名函数 Lambda 表达式和匿名函数是函数字面量。 函数字面量是未声明但立即作为表达式传递的函数。考虑以下示例&#xff1a; max(strings, { a, b -> a.length < b.length })函数 max 是一个高阶函数&#xff0c;因为它将函数值作为其第二个参数。这…

docker 安装 redis 详解

在平常的开发工作中&#xff0c;我们经常会用到 redis&#xff0c;那么 docker 下应该如何安装 redis 呢&#xff1f;简单来说&#xff1a;第一步&#xff1a;拉取redis镜像&#xff1b;第二步&#xff1a;设置 redis.conf 配置文件&#xff1b;第三步&#xff1a;编写 docker-…

C++函数——fill

在C中&#xff0c;std::fill 是标准库提供的一个算法适用于几乎所有类型的容器&#xff0c;只要这些容器支持迭代器操作。具体来说&#xff0c;std::fill 的适用性取决于容器是否提供了满足其要求的迭代器类型&#xff0c;用于将指定范围内的所有元素设置为某个特定值。它是一个…

【Java-数据结构】Java 链表面试题上 “最后一公里”:解决复杂链表问题的致胜法宝

我的个人主页 我的专栏&#xff1a;Java-数据结构&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞❤ 收藏❤ 引言&#xff1a; Java链表&#xff0c;看似简单的链式结构&#xff0c;却蕴含着诸多有趣的特性与奥秘&#xff0c;等待我们去挖掘。它就像一…

(4)ACS控制器Buffer程序记录与解析-PEG功能程序

一、pandas是什么&#xff1f; 示例&#xff1a;pandas 是基于NumPy 的一种工具&#xff0c;该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.程序 代码如下&#xff08;示例&#xff09;&#xff1a; ASSIGNPEG(0),4,0 ASSIGNPOUTS(0),0,0 ENABLE 0 ACC(0)10000 …

【浙江省乡镇界】面图层shp格式arcgis数据+乡镇名称和编码+wgs84坐标无偏移内容测评

最新2020年乡镇界面图层shp格式arcgis数据乡镇名称和编码wgs84坐标无偏移。arcgis直接打开&#xff0c;单独乡镇界一个图层。品质高