【数据结构与算法】队列(顺序存储)

news2025/1/11 22:55:35

队列

  • 一.队列的原理
  • 二.队列的结构
  • 三.队列初始化
  • 四.判断队列是否满或空
    • 1.是否为满
    • 2.是否为空
  • 五.入队操作
  • 六.队列的遍历
  • 七.出队操作
    • 1.前移
    • 2.后指
  • 八.其他小接口
    • 1.获取队列首元素
    • 2.获取队列长度
    • 3.清除队列
  • 酒.总结

一.队列的原理

队列也是一种线性结构,只不过是一种受限制的线性结构,只能在其头进行删除,尾进行添加.
因为队列是线性结构,所以我们可以通过顺序表来实现,也可以通过链表来实现,本篇我们先以顺序表来实现.
只要我们掌握了顺序表,本篇就很简单.
可以联想到我们日常中的排队,先排先办事!

二.队列的结构

首先我们还是先来讲结构,很明显我们需要用到数组,为了我们能够很好的找到数组的头和尾,我们可以定义两个数.
在这里插入图片描述
可能你有点迷糊,没事,我来画个图:
在这里插入图片描述
这个rear是随着添加元素而变化的,指在数组添加元素的后面,不是最大长度的后面.

三.队列初始化

队列的初始化就是一个空数组,frontrear都指向下标0
在这里插入图片描述
画个图就是这样:
在这里插入图片描述
都等于数组下标为0的地方.

四.判断队列是否满或空

1.是否为满

这个判断就会很简单,每当我们添加一个数据时,我们对rear记录的数组下标增加1.
那么如果队列满的话,rear就会和最大长度一样,以此来判断.
在这里插入图片描述

2.是否为空

是否为空也很好判断了,因为我们一开始初始化就是一个空的数组,只需要判断front是否与rear相等即可.,相等即为空
在这里插入图片描述

五.入队操作

顺序表的入队操作就很简单了,相当于为空数组赋值就可以了,只不过我们只能依次添加,因为是队列嘛,只能尾部添加.
所以你知道为什么我们用rear了吧,用这个来当下标,进行数据的添加,每添加一次,就对其+1,后面又接着添加,直到rear等于数组最大长度了就满了,添加不了.
在这里插入图片描述

六.队列的遍历

就跟数组的遍历一样简单的很,一头一尾作为循环的条件.
在这里插入图片描述

七.出队操作

1.前移

跟顺序表一样,乾坤大罗伊,直接将front指向的位置,赋值成为其后面一个的值,最后rear减个1即可.
在这里插入图片描述
传的参数p,只不过是拿取要删除的值.
这里的循环条件要注意,所以的数据要向前移动一步,我们又是从front开始的,所以我们需要对rear-1进行判断,因为下面我们需要后一个也就是i+1这个下标.
如果不对rear减1,会访问越界,导致程序崩溃.

2.后指

既然我们可以通过前移,达到删除元素的效果,那我们将front向后面指一下,那不就达到删除的效果了嘛,我们访问不到.
在这里插入图片描述
但是你不能一直往后面移动,不然就越界了,所以对front做了一个判断.

八.其他小接口

1.获取队列首元素

在这里插入图片描述

2.获取队列长度

在这里插入图片描述

3.清除队列

在这里插入图片描述

酒.总结

其实当你熟悉了顺序表,那么顺序存储的队列很简单,就是数组,只不过我们特殊在头和尾部的操作.

  • 队列是一种先进先出(FIFO)的数据结构。
  • 队列通常具有两个基本操作:入队和出队。
  • 入队操作将元素添加到队列的末尾。
  • 出队操作将队列的第一个元素删除并返回。
  • 队列的底层实现可以使用数组或链表。

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

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

相关文章

微服务面试-分布式 注册中心 远程调用 保护

标红的原理还是不太熟悉 重新看 分布式事务 CAP理论 Consistency(一致性) Availability(可用性) Partition tolerance (分区容错性) BASE 理论 就是做取舍 cap三选二 AT模式脏写 TCC模式 注册中…

25考研数据结构复习·6.4图的应用

最小生成树 Prim算法 从某一顶点开始构建生成树;每次将代价最小的新顶点纳入生成树,知道所有顶点都纳入为止。 时间复杂度O(|V|^2) 适合用于边稠密图 实现思想 从V0开始,总共需要n-1轮处理 每一轮处理:循环遍历所有结点&…

京东商品详情API:多规格商品的返回值处理

处理京东商品详情API中关于多规格商品的返回值,首先需要了解京东API的返回数据结构。通常,对于多规格商品(如不同颜色、尺寸等选项的商品),API会返回一个包含多个规格选项和对应价格、库存等信息的复杂数据结构。 以下…

java中 VO DTO BO PO DAO

VO、DTO、BO、PO、DO、POJO 数据模型的理解和实际使用_vo dto bo-CSDN博客 深入理解Java Web开发中的PO、VO、DTO、DAO和BO概念_java dto dao-CSDN博客

汇凯金业:区块链的介绍和应用场景

区块链, 一个近年来炙手可热的技术名词, 它就像一颗耀眼的明星, 吸引着人们的目光, 引发着人们的思考。 究竟什么是区块链? 它为何能够引发如此巨大的关注? 它又将如何改变我们的未来? 一、 区块链: 去中心化的信任…

中仕公考:什么是事业编?

事业编制内的职员是指那些经过考试选拔,成功进入公共机构服务,同时在人事部门和组织部有正规记录的个体。 入职条件: 要求应聘者参与由事业单位举办的公开招聘考试。 管理方式: 事业编制内职员的人事管理由当地的人事部门或相…

02 RabbitMQ:下载安装

02 RabbitMQ:下载&安装 1. 下载&安装1.1. 官网1.2. Docker方式1.2.1. 下载镜像1.2.2. 启动1.2.3. 登录验证 1. 下载&安装 1.1. 官网 RabbitMQ: One broker to queue them all | RabbitMQ 1.2. Docker方式 1.2.1. 下载镜像 # docker pull 镜像名称[…

Windows API钩子

原文链接:https://www.cnblogs.com/zhaotianff/p/18073138 有前面的文章中,我介绍了一个Windows API的监控工具(API Monitor)的使用。它内部就是使用了Hook机制,能Hook Windows API,能在我们钩选的API函数…

C++必备知识--类和对象

类的定义 格式 class是类的关键字,Stack是类的名字(自己定义的),在{}中定义类的主体。C中类的出现是为了替代C语言中的结构体,所以类的结构与结构体类似,{}之后需要加分号。类体中的内容称为类的成员,类中(声明)的变量…

国内优秀的消防报警设备企业「三江电子」×企企通启动采购数字化项目,共筑消防电子产品数字化新篇章

近日,深圳市高新投三江电子股份有限公司(以下简称“三江电子”)与企企通成功召开SRM采购供应链管理项目启动会。三江电子副总经理黄总、副总经理沈总、企企通高级副总裁徐总,以及双方项目负责人和项目组成员一同出席本次启动会。 …

AlmaLinux9安装中文语言包_zabbix没有中文语言包

更新你的系统包,如果系统最新可以忽略: sudo dnf update安装中文简体语言包 sudo yum install langpacks-zh_CN安装繁体中文包 sudo dnf install kde-l10n-Chinese-traditional安装完成后重启系统,以确保语言设置生效 设置系统为简体中文&…

《昇思25天学习打卡营第25天|第28天》

今天是打卡的第二十八天,实践应用篇中的计算机视觉中Vision Transformer图像分类。 从Vision Transformer(ViT)简介开始了解,模型结构,模型特点,实验的环境准备和数据读取,模型解析&#xff08…

Vue学习---vue 项目结构

这只是一个基础的目录结构,根据项目的复杂性和规模,可能会有所不同。 node_modules 项目依赖文件,其中包括很多基础依赖和自己安装的依赖。 public 存放公共资源和项目的主入口文件inde…

详细分析Sql Server索引的创建、查询、删除等基本知识(附Demo)

目录 前言1. 基本知识2. 索引2.1 创建2.2 删除2.3 查询 3. 总结 前言 原先分析过Sql的基本知识,感兴趣也可阅读: Mysql的两种存储引擎详细分析及区别(全)Mysql优化高级篇(全) 1. 基本知识 索引是在数据…

论文阅读-《Distant Supervision for Relation Extraction beyond the Sentence Boundary》

文章提出了首个将远程监督应用于跨句子关系提取的方法,通过整合句内和句间关系,利用图表示和多路径特征提取提高了准确性和鲁棒性。 摘要 文章提出了一种新的方法,用于在远程监督下进行跨句子的关系抽取。这种方法利用图表示来整合依赖和话…

滤芯材料做CE认证,按照什么EN标准测试?

要对滤芯材料进行CE认证,您需要遵循欧洲联盟的相关法规和标准。滤芯材料通常与产品安全性、电磁兼容性和环保性有关。以下是可能适用于滤芯材料的一些标准、要求和指令: 低电压指令(Low Voltage Directive,LVD):滤芯材料通常包含电…

Vue3自研开源Tree组件:人性化的拖拽API设计

针对Element Plus Tree组件拖拽功能API用的麻烦,小卷开发了一个API使用简单的JuanTree组件。拖拽功能用起来非常简单! 文章目录 使用示例allowDragallowDrop支持节点勾选支持dirty检测后台API交互 源码实现 使用示例 组件的使用很简单: 通过…

Kubernetes—二进制部署k8s集群搭建单机matser和etcd集群(1)

目录 组件部署 一、操作系统初始化配置 二、升级Liunx内核 三、部署docker引擎 四、部署etcd集群 1.在 master01 节点上操作 2.在 node节点上操作 检查etcd群集状态 增删查键 备份还原 etcd(拓展) 五.部署 Master 组件 1.上传解压 2.创建…

git查看记录详解

文章目录 git查看记录查看文件修改列表查看修改差异友好的查看修改记录结合多个选项查看记录示例输出 git查看记录 使用 git log 你不仅可以查看提交记录,还可以通过一些选项查看文件的修改列表、修改差异,并以更友好的方式查看修改记录。以下是一些常用…

ROS2入门到精通—— 2-14 ROS2实战:远程可视化实车上的文件

0 前言 ROS车的外接屏幕很小,在上面鼠标操作和键盘操作都比较麻烦,想要远程可视化ROS车上的文件,可以在本文学到一些用到实际工作中 1 ssh 终端操作远程桌面 ssh -Y pi192.168.33.200输入密码登陆,这样还是不能可视化文件&…