【数据结构与算法】循环队列 重要知识点详解

news2024/11/23 22:32:07

循环队列的数据结构。

struct CircularQueue {
	ElemType a[MaxSize];
	int front, rear;
};

这个结构体包含三个成员:

  • a 是一个 ElemType 类型的数组,用于存储循环队列的元素。
  • front 是一个整数,表示队列头部元素的前一个位置。
  • rear 是一个整数,表示队列尾部元素的位置。

循环队列的循环是怎样实现的?

循环队列的循环是通过使用模运算实现的。在循环队列中,使用一个固定大小的数组和两个指针(通常称为“头”和“尾”)来表示队列的开始和结束。当头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。

当向队列添加元素时,会将元素放在尾指针指向的位置,并将尾指针向前移动一位。当尾指针到达数组的末尾时,会将其移动回数组的开始。

bool queueFull(CircularQueue Q) { return ((Q.rear + 1) % MaxSize == Q.front); }

Status queuePush(CircularQueue &Q, ElemType e) {
	if (queueFull(Q)) {
		return ERROR;
	}
	Q.a[Q.rear] = e;
	Q.rear = (Q.rear + 1) % MaxSize;
	return OK;
}

这可以通过对数组大小进行模运算来实现。

rear = (rear + 1) % MAX_SIZE;

同样,当从队列中删除元素时,会将头指针向前移动一位。如果头指针到达数组的末尾,也会将其移动回数组的开始。

bool queueEmpty(CircularQueue Q) { return (Q.front == Q.rear); }

Status queuePop(CircularQueue &Q) {
	if (queueEmpty(Q)) {
		return ERROR;
	}
	Q.front = (Q.front + 1) % MaxSize;
	return OK;
}

这可以通过对数组大小进行模运算来实现。

front = (front + 1) % MAX_SIZE;

通过这种方式,可以使队列在数组中“循环”,即当队列填满数组后,可以从数组的开始重新开始填充,只要队列中还有空位。

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

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

相关文章

计算机跨考现状,两极分化现象很严重

其实我觉得跨考计算机对于一些本科学过高数的同学来说有天然的优势 只要高数能学会,那计算机那几本专业课,也能很轻松的拿下,而对于本科是文科类的专业,如果想跨考计算机,难度就不是一般的大了。 现在跨考计算机呈现…

Hazelcast 分布式缓存 在Seatunnel中的使用

1、背景 最近在调研seatunnel的时候,发现新版的seatunnel提供了一个web服务,可以用于图形化的创建数据同步任务,然后管理任务。这里面有个日志模块,可以查看任务的执行状态。其中有个取读数据条数和同步数据条数。很好奇这个数据…

React+TS前台项目实战(十一)-- 全局常用组件提示语可复制Link组件封装

文章目录 前言HighLightLink组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇讲的这个组件,是一个用于高亮显示文本并添加可选的跳转链接,提示文本,复制文本的 React 组件 HighLightLink组件 1. 功能分析 &#x…

Pyqt QCustomPlot 简介、安装与实用代码示例(一)

目录 简介安装实用代码示例带有填充的简单衰减正弦函数及其红色的指数包络线具有数据点的 sinc 函数、相应的误差条和 2--sigma 置信带几种散点样式的演示展示 QCustomPlot 在设计绘图方面的多功能性 结语 所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转…

基于uni-app和图鸟UI的智慧校园圈子小程序开发实践

摘要: 随着教育信息化和“互联网教育”的快速发展,智慧校园建设已成为推动校园管理现代化、提高教育教学质量的重要手段。本文介绍了基于uni-app和图鸟UI开发的智慧校园圈子小程序,旨在通过一站式服务、个性化定制、数据互通和安全可靠等特点…

outline server 服务搭建到 Ubuntu

安装outline manager到本地电脑 Windows版: https://github.com/Jigsaw-Code/outline-releases/blob/master/manager/Outline-Manager.exe MacOS版 https://github.com/Jigsaw-Code/outline-releases/blob/master/manager/Outline-Manager.dmg 启动outline manager 点击…

Proteus8.13安装及使用

Proteus安装包下载地址 具体安装方法如下: 退出所有杀毒软件,右键以管理员身份运行 如果缺插件安装插件然后点击安装 如果遇到这种需要勾选的都勾选 安装插件完成 安装过程: 安装完成后桌面会自动出现图标 注意这个安装包是免破解的, 安装好以后可以直接使用 打…

使用人工智能帮忙盲人进行环境地图绘制

介绍 据报道,仓鼠、狼、黑猩猩和蝙蝠等智能动物可以学习环境地图,并选择适当的行动路径。 因此,机器人自我定位和绘制环境地图以实现智能行为被认为是非常重要的。 另一方面,如果通过机器学习(如神经网络&#xff0…

【scrapy】爬虫,从429状态码说起

许久未爬,发现爬不动了,哈哈哈,记录下这次失败的爬取经历 问题描述 针对这样的一个网站: https://www.farfetch.cn/cn/shopping/women/dresses-1/items.aspx?page1&view96&sort3 需求: 1.需要爬取列表页…

MySQL中的客户端选项(二)

在全局选项文件之后读取此选项文件,但(在Unix上)在用户选项文件之前读取。如果文件不存在或无法访问,则会发生错误。如果file_name不是绝对路径名,则会相对于当前目录进行解释。 仅使用给定的选项文件。如果文件不存在…

HACH哈希紫外可见光分光光度计维修DR6000

DR3900可见分光光度计内置准双光束光学系统,自动校准波长,该可见光分光光度计预置200多个用户程序,几乎覆盖常规水质参数,彩色触屏搭载中文操作界面,可自动分析检测并存储2000组实验数据,是一款测量准确的可…

《EDA技术》 Quartus图3—4实验报告

目录 一:结构描述方式 1.1创建工程 1.1.1点击New Project Wizard,创建t34工程。 1.1.2设置工程路径和名称(t34) 1.2设计门电路 1.2.1设计三输入或非门VHDL程序 1.2.2 设计非门VHDL程序 ​编辑 1.2.3 设计二输入或非门VHD…

ubuntu16因swap分区uuid错误启动慢排查

感觉ubuntu16启动特别慢 dmesg查看如下: [ 10.050123] audit: type1400 audit(1718608189.395:11): apparmor"STATUS" operation"profile_load" profile"unconfined" name"webbrowser-app//oxide_helper" pid708 comm&q…

【测试专题】系统测试报告(原件Word)

软件测试报告在软件开发过程中起着至关重要的作用,主要有以下几个主要原因: 1、确保软件质量 2、提供决策支持 3、记录测试过程和结果 4、促进沟通和协作 5、符合标准和法规要求 6、改进测试流程和策略 7、降低风险 软件开发全套资料获取进主页或者本文末…

查询Kafka集群中消费组(group)信息和对应topic的消费情况

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

一款超好用的国产 Redis 可视化工具,真香!

哈喽,大家好,我是黑板报君,一个资深的软件开发工程师,致力于为大家分享各领域优质开源项目,开发前沿技术以及互联网技术圈动态。 添加图片注释,不超过 140 字(可选) 日常开发过程中…

VBA学习(5):批量生成小饼图

之前给大家分享了如何用一个函数制作各种常见图表,之后有朋友问,下图中表示精确占比的饼图是怎么批量生成的? 批量生成小饼图有两种常用的方法,一种是用插件,比如Sparklines;另外一种是自己动手丰衣足食&am…

UDS诊断、ECU刷写、OTA升级、Tbox测试、CANoe实操

每天的直播时间: 周一至周五:20:00-23:00 周六与周日:9:00-12:00,14:00-17:00 TBOX 深圳 涉及过T-BOX测试吗Ota升级涉及的台架环境是什么样的?上…

位图法-有效的数独

有效的数独,主要是判断每行每列每宫有无重复元素。 每行每列用二重循环,每宫比较复杂,需要考虑每一宫的坐标与二重循环ij对应关系 行i,每一宫3行,3列 x3*(i/3)j/3 y3*(i%3)j%3

计算机考研|双非计算机专业是考研还是就业?主要看这一点!

去看一看招聘就知道了,看看公司需要的开发或者计算机岗位要求的东西你在本科的时候有没有精通的 如果你发现:哎?看着招聘的要求好像本科多少都接触过,但现在已经忘得差不多了,或者是,哦,我知道…