stack和queue的使用

前言

前面我们对string、vector、list做了介绍并对底层进行了实现!本期我们继续来介绍STL容器,stack和queue!

本期内容介绍

stack 常用接口的介绍

queue 常用接口的介绍

什么是stack?

这里的栈和我们C语言实现的数据结构的那个栈功能是一样的!栈是一种支持在一端进行插入和删除的顺序容器,遵循" 后进先出(LIFO)"的原则!库里面也说了它是一种容器适配器!什么是容器适配器,这里先不做介绍,等下一期模拟实现的时候再来详细介绍,本期只介绍如何使用!

常用接口介绍

empty

判断栈是否为空

size

获取栈里面的元素个数

top

获取栈顶元素(的引用)

push

在栈顶插入一个元素

pop

删除栈顶元素

OK,这就是栈的常用接口!很简单,我下面来演试一下:

void stack_test1()
{stack<int> st;st.push(1);st.push(2);st.push(3);st.push(4);st.push(5);bool emp = st.empty();cout << "empty : " << emp << endl;size_t sz = st.size();cout << "size : " << sz << endl;int top = st.top();cout << "top : " << top << endl;st.pop();top = st.top();cout << "top : " << top << endl;
}

OK,我们来做一道OJ来用一下stack吧!

最小栈

这道题让你实现一个最小元素的栈,每次可以用常量级别的时间复杂度获取当前栈中的最小元素!

这里用一个栈肯定是不行的!一个栈遍历的话不符合人家的常量级别的时间复杂度!既然一个栈不可以,那我们搞两个栈一个存当前栈的数据域,一个存当前栈里面的的最小元素!

如果普通栈为空或当前元素比普通栈的栈顶元素小得话插入到最小栈!

OK,我先画个图,走一遍刚刚的思路:

OK,我们实现一下:

class MinStack 
{
public:MinStack() {}void push(int val) {_elem.push(val);if(_min.empty() || val <= _min.top())//普通栈为空或当前元素比普通栈顶元素小,入最小栈_min.push(val);}void pop() {if(_min.top() == _elem.top())//如果普通栈的栈顶元素和最小栈相同,也要删最小栈的元素_min.pop();_elem.pop();}int top() {return _elem.top();//返回普通栈的栈顶元素}int getMin() {return _min.top();//获取最小栈的栈顶元素}private:stack<int> _elem;//普通栈stack<int> _min;//最小栈
};

OK,栈就介绍到这里,下面我们来看看队列!

什么是queue?

和栈一样这里的队列和我们数据结构那里的一样!队列是一种支持在尾部插入和在头部删除的线性容器!遵循"先进先出(FIFO)"的原则!不过这个的底层是带头双向循环链表!

这里他还是适配器,暂时不介绍,下一期模拟实现在介绍!

常用接口介绍

empty

判断队列是否为空

size

获取队列中的元素个数

front

获取队头元素(的引用)

back

获取队尾元素(的引用)

push

在队尾插入一个元素

pop

删除队头的数据

OK,队列的接口就这么多,也是很简单的!下面还是举个例子:

void queue_test1()
{queue<int> q;q.push(1);q.push(2);q.push(3);q.push(4);q.push(5);bool emp = q.empty();cout << "empty : " << emp << endl;size_t sz = q.size();cout << "size : " << sz << endl;int front = q.front();cout << "front : " << front << endl;int back = q.back();cout << "back : " << back << endl;q.pop();sz = q.size();cout << "size : " << sz << endl;
}

OK,这里对列这了有纯队列的题,他一般是作为算法的辅助工具的!经典的就是BFS!后面遇到了在介绍!

结束语: 路在自己脚下,没有人可以决定我的方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

向上向下采样

在数字图像处理中&#xff0c;向上采样&#xff08;upsampling&#xff09;和向下采样&#xff08;downsampling&#xff09;是两种常见的操作&#xff0c;用于改变图像的分辨率。 向上采样&#xff08;Upsampling&#xff09;&#xff1a; 向上采样是指增加图像的分辨率&…

leetcode代码记录(最长连续递增序列

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定…

如何查看当前python环境的安装路径

起因&#xff1a;在查看python安装路径时&#xff0c;由于环境变量未添加&#xff0c;导致直接用python无法查看&#xff0c;但是pip又可用。因此找到另外一种代替方法。 利用pip show 库 pip show numpy

代码随想录第34天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

1005.K次取反后最大化的数组和 1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 贪心算法&#xff0c;这不就是常识&#xff1f;还能叫贪心&#xff1f;LeetCode&#xff1a;1005.K次取反后最大化的数组和_哔哩哔…

德兰梅尔:耐高温热销的膜元件亮相2024上海国际生物发酵展

德兰梅尔&#xff1a;耐高温热销的膜元件盛装亮相2024上海国际生物发酵展&#xff0c;8月7-9号上海新国际博览中心与您不见不散&#xff01; 据了解&#xff0c;从成立至今&#xff0c;德兰梅尔一直专注膜技术、膜产品的开发生产。在中国市场上&#xff0c;德兰梅尔刚步入中国…

共享门店模式:一种资源优化的创新合伙人机制

共享门店模式&#xff0c;亦被称为“共享股东”模式&#xff0c;是一种创新的合伙人机制。它运用新颖的思维、方式及系统&#xff0c;吸引并集结拥有资源和能力的人才&#xff0c;共同合作&#xff0c;并使他们转变为门店的分红股东。 这一模式的核心在于门店资源的共享&#x…

题目:学习使用按位或 |

题目&#xff1a;学习使用按位或 | There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should leave qui…

(css)el-tag标签,el-select多选框,el-cascader级联选框自定义样式

(css)el-tag标签&#xff0c;el-select多选框&#xff0c;el-cascader级联选框自定义样式 css: :root {--button-color: #065de0; }// 标签 .tagNew {margin-right: 20px;border-radius: 20px; }.el-tag.el-tag--info {background-color: var(--button-color);border-color: v…

字符串匹配算法之BF与KMP算法

目录 BF算法(暴力匹配算法) KMP算法 核心思想&#xff1a; next数组 next数组的优化 BF算法(暴力匹配算法) #include <assert.h> int BF(const char* str, const char* sub) {assert(str ! NULL && sub ! NULL);if (str NULL || sub NULL){return -1;}int…

MySQL学习笔记(二)

1、把查询结果中去除重复记录 2、连接查询 从一张表中单独查询&#xff0c;称为单表查询。emp表和dept表联合起来查询数据&#xff0c;从emp表中取员工名字&#xff0c;从dept表中取部门名字&#xff0c;这种跨表查询&#xff0c;多张表联合起来查询数据&#xff0c;被称为连…

【Java SE】8.1继承和多态

目录 1.继承 1.1为什么需要继承 1.2继承概念 1.3继承的语法 1.4父类成员访问 1.4.1子类中访问父类的成员变量 1.4.2子类中访问父类的成员方法 1.5 super关键字 1.6子类构造方法 1.7 super和this 1.8再谈初始化 1.9 protected关键字 1.10继承方式 1.11 final关键字 …

YOLOv9最新改进系列:YOLOv8融合BoTNet模块,融合CNN+自然语言处理技术的优势,有效提升检测效果!

YOLOv9最新改进系列&#xff1a;YOLOv9融合BoTNet模块&#xff0c;融合CNN自然语言处理技术的优势&#xff0c;有效提升检测效果&#xff01; YOLOv9原文链接戳这里&#xff0c;原文全文翻译请关注B站Ai学术叫叫首er B站全文戳这里&#xff01; 详细的改进教程以及源码&…

解读一个binlog文件的内容

解析一个binlog mysqlbinlog -v mysql-bin.000001 /*!50530 SET SESSION.PSEUDO_SLAVE_MODE1*/; /*!50003 SET OLD_COMPLETION_TYPECOMPLETION_TYPE,COMPLETION_TYPE0*/; DELIMITER /*!*/;# at 4 #240402 17:28:13 server id 4294967295 end_log_pos 123 CRC32 0x64dbff7b …

深入理解计算机系统 家庭作业 2.84

这题没有这个要求所以可以用 ? > : < 这种运算 以下代码用的是位级运算.因为我误解了题意 呜呜呜 想看用判断的代码请自行百度 ((((ux<<9>>9)<<((ux<<1>>24)-127)) - ((uy<<9>>9)<<((uy<<1>>24)-127)))>…

【攻防世界】ics-05(PHP伪协议+代码审计+Linux指令)

首先根据题目提示&#xff0c;进入云平台设备维护中心页面&#xff1a; 页面无异常&#xff0c;检查源代码&#xff1a; 发现注入点 ?page&#xff0c;大致有如下思路&#xff1a;1、SSTI模板引擎漏洞&#xff1b;2、XXS&#xff1b;3、PHP伪协议。 首先尝试SSTI漏洞&#xf…

市场复盘总结 20240408

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率 33% 最常用的…

如何实现docker内部容器之间的端口访问

Docker 的普及促使众多应用迁至其上部署&#xff0c;得益其诸多优势。然而&#xff0c;相较于传统非 Docker 环境中各应用通过 127.0.0.1:端口 即可轻松互访&#xff0c;Docker 容器若未经端口映射&#xff0c;彼此间端口则无法直接相通。是否存在更优方案以应对这一挑战&#…

简单易懂的Metabase入门指南

简单易懂的Metabase入门指南 数据分析在现代企业决策过程中扮演着至关重要的角色。但是&#xff0c;数据分析和可视化工具往往过于复杂&#xff0c;特别是对于非技术人员而言。Metabase是一个开源的数据分析和BI&#xff08;商业智能&#xff09;工具&#xff0c;它以易用性为…

代码审计中应注意的命令执行函数以及命令

目录 1.远程代码执行函数 1.1.php 1.1.1.call_user_func() 和 call_user_func_array() 1.1.2.create_function() 1.1.3.assert() 1.1.4.preg_replace() 1.1.5.array_map(), array_walk(), array_filter() 1.1.6.register_shutdown_function() 和 register_tick_functio…

数据结构__顺序表

概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储。在数组上完成数据的增删查改 需要用到数组&#xff1a;数组的绝对优势&#xff1a;下标的随机访问&#xff08;因为物理空间连续&#xff09; a[i]等…