数据结构【队列专题】

先进先出(First In First Out,FIFO)的线性序列,成为“队列”。

队列也是一种线性表,只不过它是操作受限的线性表,只能在两端操作:

一端进,一端出。进的一端成为队尾(rear),出的一端称为队头(front)。队列可以用顺序存储,也可以用链式存储。

循环队列 

#include <iostream>
using namespace std;
#define Maxsize 100typedef  struct SqQueue {int *base; //基地址int front, rear; //头指针,尾指针
}SqQueue;//循环队列的初始化
bool InitQueue(SqQueue &Q)//注意使用引用参数,否则出了函数,其改变无效
{Q.base = new int[Maxsize];//分配空间if (!Q.base) return false;Q.front = Q.rear = 0; //头指针和尾指针置为零,队列为空return true;
}//循环队列的入队
bool EnQueue(SqQueue &Q, int e)//将元素e放入Q的队尾
{if ((Q.rear + 1) % Maxsize == Q.front) //尾指针后移一位等于头指针,表明队满return false;Q.base[Q.rear] = e; //新元素插入队尾Q.rear = (Q.rear + 1) % Maxsize; //队尾指针加1return true;
}//循环队列的出队
bool DeQueue(SqQueue &Q, int &e) //删除Q的队头元素,用e返回其值
{if (Q.front == Q.rear)return false; //队空e = Q.base[Q.front]; //保存队头元素Q.front = (Q.front + 1) % Maxsize; //队头指针加1return true;
}//取循环队列的队头元素
int GetHead(SqQueue Q)//返回Q的队头元素,不修改队头指针
{if (Q.front != Q.rear) //队列非空return Q.base[Q.front];return -1;
}
//循环队列的长度
//如果Q.rear >= Q.front  长度为  Q.rear - Q.front
//如果Q.rear < Q.front  长度为 Q.rear - Q.front + Maxsize
//以上两者结合为下列公式,前者防负数,后者防正数
int QueueLength(SqQueue Q)
{return (Q.rear - Q.front + Maxsize) % Maxsize;
}int main()
{SqQueue Q;int n, x;InitQueue(Q);//初始化队列(一定要初始化,否则后面存储出错)cout << "请输入元素个数n:" << endl;cin >> n;cout << "请依次输入n个整型数,依次入队:" << endl;while (n--){cin >> x;EnQueue(Q, x);//入队}cout << endl;cout << "队列内元素个数,即长度:" << QueueLength(Q) << endl;cout << "队头元素:" << GetHead(Q) << endl;cout << "元素依次出队:" << endl;while (true)//如果栈不空,则依次出栈{if (DeQueue(Q, x))cout << x << "\t";//出队元素elsebreak;}cout << endl;cout << "队列内元素个数,即长度:" << QueueLength(Q) << endl;return 0;
}

单调队列

	//常见模型:找出滑动窗口中的最大值/最小值int hh = 0, tt = -1;for (int i = 0; i < n; i ++ ){while (hh <= tt && check_out(q[hh])) hh ++ ;  // 判断队头是否滑出窗口while (hh <= tt && check(q[tt], i)) tt -- ;q[ ++ tt] = i;}

详解单调队列算法

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

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

相关文章

oracle安装卡在create inventory_滴滴云服务器上安装Oracle12cR2单实例数据库

一、相关说明Oracle数据库是由美国甲骨文公司推出的一款优秀的关系型数据库。当前最新版为Database 19c。本文简述Oracle Database 12cR2在滴滴云主机上的安装过程。如需更权威的指导方法请参考Oracle官方安装文档。二、环境概述一台DC2云主机&#xff08;2c4g&#xff09;一个…

【WebRTC---序篇】(二)Windows平台WebRTC源码编译

需要准备的东西 (一)一个强大的梯子(懂得都懂)!!!!!!!!! (二) 下载depot_tools Windows指定地址必须在此下载 打开这个页面,找 install depot_tools 这个关键字 请把他解压到C盘,并且设置到PATH环境变量种,且让它处于最顶端。 其他需要设置的额外变量 DEPOT_TOOLS_…

商品管理后台发布商品时,规格值组合的前端交互的实现逻辑

方案1&#xff1a;先计算总行数&#xff0c;再循环填充规格值 根据每种规格值数量计算得到总行数&#xff0c;如果下图有3种规格&#xff1a;长度、重量、大小&#xff0c;规格值个数分别为&#xff1a;3、3、2,3x3x218行。 规格种类有3种&#xff0c;于是写3层嵌套递归循环填…

【WebRTC---源码篇】(五)WebRTC视频引擎

1. 视频数据的采集时间 2.视频分发器VideoBroadCaster

activiti异步执行_对基于消息队列的Activiti异步执行器进行基准测试

activiti异步执行一点历史 永无休止的一件事是&#xff0c;Activiti在某些非常大的规模的大型组织中的使用方式。 过去&#xff0c;这导致了各种优化和重构&#xff0c;其中包括异步执行器-替换旧的作业执行器。 对于未启动的用户&#xff1a;这些执行器在流程实例中处理计时器…

chrome浏览器设置网页快速到顶部和到底部的方法

鼠标移到浏览器的书签任意位置&#xff0c;点击鼠标右键添加书签&#xff0c;在添加书签的窗口输入名称和js代码&#xff0c;然后把书签移到浏览器书签栏的最左侧&#xff0c;这样每次浏览网页就可以使用快捷方式快速到底部或者顶部了。 快速到顶部的js代码&#xff1a;javascr…

apache pdfbox_Apache PDFBox命令行工具:无需Java编码

apache pdfbox在博客文章Apache PDFBox 2中 &#xff0c;我演示了将Apache PDFBox 2用作从Java代码中调用的库来操作PDF。 事实证明&#xff0c;Apache PDFBox 2还提供了可以直接从命令行直接使用的命令行工具 &#xff0c;而无需其他Java编码。 有几种命令行工具可用&#xff…

【WebRTC---源码篇】(六)NACK判断包位置的关键算法

首先保证a与b不相等 template <typename T, T M = 0> inline bool AheadOf(T a, T b) {static_assert(std::is_unsigned<T>::value,"Type must be an unsigned integer.");return a != b && AheadOrAt<T, M>(a, b); } template <type…

spring集成mq_使用Spring Integration Java DSL与Rabbit MQ集成

spring集成mq我最近参加了在拉斯维加斯举行的2016年Spring大会 &#xff0c;很幸运地看到了我在软件世界中长期敬佩的一些人。 我亲自遇到了其中的两个人&#xff0c;他们实际上合并了几年前我与Spring Integration相关的一些次要贡献– Gary Russel和Artem Bilan &#xff0c;…

MyEclipse 如何使用断点调试

文章目录1、在需要的代码行处打断点右键添加断点双击添加断点快捷键添加断点2、以debug模式开启服务器通过debug执行列表&#xff0c;选择服务器启动当前程序按右键&#xff0c;选择debug as&#xff0c;再选择服务器启动开发视图底部server列表选择服务器开启debug视图&#x…

【WebRTC---源码篇】(八)音频数据采集

ADM的创建 1.Audio Device Module是在逻辑层与硬件设备层之间进行了转换,需要使用什么功能,调用什么接口就可以,不要管底层平台实现。 2.AudioDeviceModule是一个接口类,定义了一系列接口。最终实现由子类AudioDeviceModuleForTest实现,其中包括一些测试函数(对设备的…

jsf netbeans_NetBeans Java EE技巧9:从数据库创建JSF应用程序

jsf netbeans您需要非常快速地创建数据库前端吗&#xff1f; NetBeans IDE允许人们以很少的代码就为一组数据库表开发JSF应用程序前端。 现在&#xff0c;本教程是一个老歌&#xff0c;但是一个好东西……对于那些不了解它的人来说&#xff0c;值得再次提及。 首先&#xff0c…

cloud foundry_介绍“又一个” Cloud Foundry Gradle插件

cloud foundry在与两个同事&#xff08;感谢Mark Alston和Dave Malone &#xff01;&#xff09;一起使用自动Jenkins管道部署Cloud Foundry应用程序的过程中&#xff0c;我决定尝试编写Gradle插件来执行一些通常需要完成的任务使用命令行Cloud Foundry Client完成 。 引入一个…

Oracle/MySQL/Java数据类型对应表

文章目录数据类型对照表MySQL 的 int、bigint、mediumint、smallint、tinyint 的对比关于 MySQL 整型显示位数的问题关于 MySQL 的 timestamp关于 JDBC 类型数据类型对照表 MysqlOracleJavaBIGINTNUMBER(19,0)java.lang.LongBITRAWbyte[]BLOBBLOB RAWbyte[]CHARCHARjava.lang.…

java10个基础错误_我们处理了10亿个Java记录的错误-这是导致97%的错误的原因

java10个基础错误97&#xff05;的记录错误是由10个唯一错误引起的 在2016年&#xff0c;一件事在30年内没有改变。 开发和运营团队仍依靠日志文件对应用程序问题进行故障排除。 由于某些未知原因&#xff0c;我们隐式信任日志文件&#xff0c;因为我们认为事实隐藏在其中。 如…

3制造数据集_基于MBD的产品设计制造技术研究

本篇节选自论文《基于MBD的产品设计制造技术研究》&#xff0c;发表于《中国电子科学研究院学报》第8卷第6期&#xff0c;作者为中国电子科技集团公司第14研究所专家朱建军。本文经授权转载自公众号学术plus&#xff0c;版权归原作者所有。作者&#xff1a;中国电子科技集团公司…

【WebRTC---源码篇】(九)媒体协商

1.媒体协商的过程 2. 重要的接口类 3.时序图 4.几个关键点 5.code if (InitializePeerConnection()) {peer_id_ = peer_id;//参数1:观察者,创建成功后回调OnSuccess//参数2:消息类型,自动推导peer_connection_->CreateOffer(this, webrtc::PeerConnectionInterface::RTCOff…

【WebRTC---源码篇】(七)NACK的处理流程

NACK调用栈 从分发器接收Packet包 void RtpVideoStreamReceiver::ReceivePacket(const RtpPacketReceived& packet) {if (packet.payload_size() == 0) {// Padding or keep-alive packet.// TODO(nisse): Could drop empty packets earlier, but need to figure out how…

java实现资源监视器_实现Java监视的12个步骤程序存在缺陷

java实现资源监视器Java监视的当前状态最大的问题是什么&#xff1f; 生产中的错误很像喝醉的短信。 您只有在事情已经发生之后才意识到出了点问题。 发短信日志通常比应用程序错误日志更有趣&#xff0c;但是……两者可能同样难以修复。 在本文中&#xff0c;我们将执行一个…

hystrix应用 博客_使用Hystrix DSL创建弹性骆驼应用程序

hystrix应用 博客Apache Camel是一个成熟的集成库&#xff08;到现在已有9年的历史了&#xff09;&#xff0c;它实现了Enterprise Integration Patterns一书中的所有模式。 但是Camel不仅是EIP实现库&#xff0c;它还是一个不断发展&#xff0c;添加新模式并适应行业变化的现代…