【算法笔记】队列与优先队列

news2024/9/19 17:11:24

队列与优先队列

1.队列的概念

只允许在一端插入数据操作,在另一端进行删除数据操作的特殊线性表;进行插入操作的一端称为队尾(入队列),进行删除操作的一端称为队头(出队列);

队列具有先进先出(FIFO)的特性。

2.队列性质

  • **定义:**队列是限定只能在表的一端(队尾)进行插入,在表的另一端(队首)进行删除的线性表
    队尾(tail)——允许插入的一端
    队头(head)——允许删除的一端
  • 队列特点:先进先出(FIFO)
  • 队列中有效元素的个数:tail – head
  • **约定:**head指向第1个元素,tail指向最后元素的下个位置。(可以改变)

在这里插入图片描述

  • 出队)队首删除一个数的操作是head++;
  • 入队)队尾增加一个数(假设这个数是x)的操作是q[tail]=x; tail ++;
  • 空队列的判断条件:head == tail;

3.队列实现

在这里插入图片描述

队列结构实现:
struct queue
{
       int  data[100];  //队列的主体,用于存储内容
       int  head;   //队首
       int  tail;    //队尾
}

4.队列成员函数

C++队列queue类成员函数如下:

  • back()返回队尾元素
  • empty()如果队列空则返回真
  • front()返回队头元素
  • pop()删除队头元素
  • push()在队尾加入一个元素
  • size()返回队列中元素的个数

5.优先队列的概念

出队顺序和入队顺序无关,与优先级相关。主要区别普通队列在于出队,优先级高者出队。

C++优先队列priority_queue类成员函数如下

5.1出队是从大到小的顺序:大根堆

//默认是降序排列,大顶堆

priority_queue <int>q;

5.2出队是从大到小的顺序:小根堆

//升序队列,小顶堆
priority_queue <int,vector<int>,greater<int> > q;

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

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

相关文章

离散事件动态系统

文章目录离散事件动态系统ppt离散事件系统建模离散事件动态系统的基本组成元素离散事件动态系统仿真具体建模petri建模实例离散事件动态系统 ppt ppt 仿真建模步骤 离散事件系统建模 from&#xff1a;离散事件系统建模 离散事件动态系统的基本组成元素 &#xff08;1&am…

腾讯云服务器CVM和轻量应用服务器区别对比

腾讯云新推出的轻量应用服务器Lighthouse和原来的CVM云服务器有什么区别&#xff1f;轻量应用服务器Lighthouse是一种易于使用和管理、适合承载轻量级业务负载的云服务器&#xff0c;主要用于Web网站应用&#xff0c;轻量服务器使用及后期运维更加简单方便&#xff1b;云服务器…

TypeError: Axes3D.view_init() got an unexpected keyword argument ‘roll‘——版本问题

解决办法 删除roll关键字参数。 掉坑过程 今天在学习matplotlib绘制3D图形时&#xff0c;使用的是matplotlib官网提供的例子Plot 2D data on 3D plot 敲好代码后&#xff0c;运行时报错TypeError: Axes3D.view_init() got an unexpected keyword argument ‘roll’ 看来官…

k8s学习之路 | Day18 Pod 基础

文章目录Pod 基础认知什么是 PodPod 的示例 yamlPod 的形式Pod 的多容器协同Pod 的生命周期容器的类型应用容器初始化容器临时容器静态 Pod什么是静态 Pod静态 Pod 位置Pod 探针机制探针类型Probe 配置项探针案例Pod 基础认知 什么是 Pod https://kubernetes.io/zh-cn/docs/c…

黑马程序员Java教程学习笔记(四)

学习视频&#xff1a;https://www.bilibili.com/video/BV1Cv411372m 如侵权&#xff0c;请私信联系本人删除 文章目录黑马程序员Java教程学习笔记&#xff08;四&#xff09;static&#xff1a;修饰成员变量、内存机制static&#xff1a;修饰成员方法、内存机制static访问注意事…

【Vue学习】Vue原理—虚拟DOM和diff算法

1. 虚拟DOM 1.1 虚拟DOM介绍 主流前端框架(Vue、React)的主要思想是数据驱动视图&#xff0c;以避免不必要DOM操作&#xff0c;从而提高Web应用程序的性能。如何高效的操作DOM&#xff0c;就需要使用虚拟DOM(Virtual DOM, vdom)技术。在Vue的实现中&#xff0c;虚拟DOM是以Ja…

信息收集工具使用详解

要求&#xff1a;熟练掌握域名收集、子域名、IP地址收集的各种工具的使用&#xff0c;结果写入实验报告 警示&#xff1a;遵纪守法 工具&#xff1a;kail 信息收集 信息收集又称 网络踩点(footprinting)&#xff0c;攻击者通过各种途径对要攻击的目标进行有计划和有步骤的信息…

除了ChatGPT,这20款AI神器同样值得你使用

2022年是AI技术大发展的一年&#xff0c;特别是ChatGPT的很空出世&#xff0c;让AI工具迎来大爆发&#xff0c;今天就给大家整理出20款免费且实用的AI工具推荐&#xff0c;无论是做设计还是日常学习工作都能用得到。2023年已经开始&#xff0c;让这些AI工具帮你提升生产效率&am…

Docker SYS_ADMIN 权限容器逃逸

1.漏洞原理Docker容器不同于虚拟机&#xff0c;它共享宿主机操作系统内核。宿主机和容器之间通过内核命名空间&#xff08;namespaces&#xff09;、内核Capabilities、CGroups&#xff08;control groups&#xff09;等技术进行隔离。若启动docker容器时给主机一个--cap-addSY…

【el】表格

一、用法1、动态表格后端返回的值&#xff1a;第一个数组是表头&#xff0c;其余是内容<el-tableref"tableHeight":data"tableColumns":height"tableHeight"borderstyle"width: 100%; margin-top: 1%"row-click"rowclick"…

14、字符串处理函数

目录 一、字符串复制 二、字符串连接 三、字符串比较 四、字符串大小写转换 五、获得字符串长度 一、字符串复制 在字符串处理函数中包含strcpy函数&#xff0c;该函数可用于复制特定长度的字符串到另一个字符串中。其语法格式如下&#xff1a; 功能&#xff1a;把源字符…

张驰咨询:用六西格玛方法降低锂电池内部短路缺陷

锂电池作为现代电子设备中最常用的电池类型之一&#xff0c;由于其高能量密度和长寿命等优点&#xff0c;已经广泛应用于手机、笔记本电脑、电动车等领域。然而&#xff0c;在锂电池制造过程中&#xff0c;由于材料、工艺、设备等多种因素的影响&#xff0c;会产生内部短路的问…

基于麻雀算法改进的SVM电器启动识别,基于麻雀算法优化SVM分类预测

目录 摘要 背影 Eggholder测试函数 MATALB编程 测试函数代码 麻雀算法原理 麻雀算法主要参数 麻雀算法流程图 麻雀算法优化测试函数代码 基于麻雀算法改进的SVM电器启动识别 matlab编程实现 效果图 结果分析 展望 摘要 麻雀算法理论&#xff0c;SSA-SVM,电器启动识别&#x…

Android开发之简单控件

文章目录一 文本显示1.1 文本设置的两种方式1.2 常见字号单位类型2.2 设置文本的颜色三 视图基础3.1 设置视图的宽高3.2 设置视图的间距3.3 设置视图的对齐方式四常用布局4.1 线性布局LinearLayout4.2 相对布局RelativeLayout4.3 网格布局GridLayout4.4 滚动视图ScrollView五 按…

【uni-app教程】二、UniAPP 初始化相关配置

二、UniAPP 初始化相关配置 (1)工程目录结构 https://uniapp.dcloud.net.cn/tutorial/project.html#目录结构) 工程简介 一个工程&#xff0c;就是一个 Vue 项目&#xff0c;你可以通过 HBuilderX 或 cli 方式快速创建 uni-app 工程&#xff0c;详见&#xff1a;快速上手。 …

arduino烧录引导程序(BootLoader)方法及出错点

文章目录一、硬件电路准备1、328P的管脚图2、电路连接图&#xff08;1&#xff09;连接图&#xff08;2&#xff09; ISP连接及端口介绍&#xff08;3&#xff09;管脚连接对应表1、准备ArduinoISP2、使用Arduino as ISP烧录设置Arduino板为烧写器3、烧录及错误4、为新烧录328p…

无代码开发浅谈

前 言互联网共享软件工厂KAPT无代码开发平台&#xff0c;提供了可视化编程方法&#xff0c;经过拖拽组件&#xff0c;就像做ppt一样&#xff0c;快速的就能搭建一个软件应用&#xff0c;更高效的构建业务应用程序。以前开发软件大多只能编写代码完成&#xff0c;所以有软件开发…

Mit6.S081-实验1-Xv6 and Unix utilities-pingpong问题

Mit6.S081-实验1-Xv6 and Unix utilities-pingpong问题在进行pingpong实验的时候遇到了许多问题在这里记录一下。 1.输出乱序问题 出现这个问题主要是因为没有弄懂wait(0)的作用&#xff0c; wait(0)暂时停止目前进程的执行&#xff0c;直到信号来到或子进程结束&#xff0c;…

如何让自动化测试框架更自动化?

一、引言 ​对于大厂的同学来说&#xff0c;接口自动化是个老生常谈的话题了&#xff0c;毕竟每年的MTSC大会议题都已经能佐证了&#xff0c;不是大数据测试&#xff0c;就是AI测试等等&#xff08;越来越高大上了&#xff09;。不可否认这些专项的方向是质量智能化发展的方向…

csgo搬砖项目,真的能月入6k?

01 相信很多粉丝都知道steam这个平台&#xff0c;steam是一个游戏平台&#xff0c;这里面的游戏都是要通过去充值购买才能去玩&#xff0c;有的是买游戏的账号&#xff0c;有的是买这个游戏的使用权&#xff0c;买了之后安装到手机上或者电脑上我们才能去畅玩游戏&#xff0c;…