【线性数据结构】队列

本文详细介绍了线性数据结构中的队列,包括基础队列的特征、单调队列和优先队列的概念及操作。队列遵循先进先出原则,单调队列用于维护单调性质,优先队列则提供了一种处理具有优先级的元素的方式。并结合具体实例展示了如何使用单调队列解决滑动窗口最大值和最小值问题,以及利用优先队列解决合并果子的最小体力耗费问题。
摘要由CSDN通过智能技术生成

队列

队列(queue)一样都是线性数据结构,它的特征如下:

  • 队列中的数有的特征,它遵循先进先出的原则,这也是栈的特征。
  • 可以在队尾添加元素,队头添加元素,也可以队头删除元素。

基础队列的特征

队列的概念

  1. 队头和队尾:按照思想,从队头删除元素,从队尾入队元素。
  2. 入队:插入队列的操作,是元素入队。
  3. 出队:删除队列的操作,让元素出队。

我们现在有一个队列,为[1,3]:

在这里插入图片描述添加元素时,元素只能从队尾一端进入队列,也即是2只能跟在1后面。
当然,出队也同理:
在这里插入图片描述元素只能从队首出队列。

队列操作

  • 建立队列:queue<int> qu
  • 入队:qu.push()
  • 出队:qu.pop()
  • 访问队首:qu.front()
  • 判断队列是否为空:qu.empty()

代码组织

关于队列的源代码

queue<int> q;
while(!q.empty() ){
	q.pop();
}
q.push_back(v):

单调队列

它的队首和普通的队列一样,只能删除元素,而它的队尾既可以添加元素也可以删除元素。 他随队尾输出,出队。

单调队列的作用&原理

就是用来维护一段区间内的单调上升,下降性质,导出性质就是也可以用来维护一个区间内的值。他的原理是这样的:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值