当前位置: 首页 > news >正文

【数据结构与算法】循环队列

循环队列

  • 一.循环队列的引入
  • 二.循环队列的原理
  • 三.循环队列判断是否为满或空
    • 1.是否为空
    • 2.是否为满
  • 四.循环队列入队
  • 五.循环队列出队
  • 六.循环队列的遍历
  • 七.循环队列获取长度
  • 八.总结

一.循环队列的引入

还记得我们顺序队列的删除元素嘛,我们有两种方式,一种是将数组要删除元素后面的元素往前面移动.
还有一种是直接将front向后面指,达到删除的效果.
这两种方式有有其弊端,第一种如果数据巨大,需要频繁的移动.
第二种则是对数组空间的浪费,删除越多,越来越多的空间浪费.
那么我们采用循环队列就可以解决这些问题.
在这里插入图片描述

二.循环队列的原理

正常我们的尾巴指向末尾,现在我们想办法,将rear指向头位置.
在这里插入图片描述
当然数组不是链表,只需要我们就指向一下进行了,我们需要能够循环的指向,当不停的插入的时候,我们不断的循环指向.

三.循环队列判断是否为满或空

1.是否为空

还是跟原来一样,如果front=rear就为空.
在这里插入图片描述

2.是否为满

在这里插入图片描述
这个就是循环链表的特殊之处了,为了能够循环指向,我们用到了取模运算,我这里MAXSIZE这个宏是5,那么我的rear可以指向0~4一直循环往返.
为什么要用rear加1,这个问题也很关键,为了更能很好的判断是否为满,我们空了一个数组元素,为什么呢?
首先,rear是指向最后一个元素的下一个元素,如果我们插满的话,因为是循环的,那么rear就会等于front,这个与我们判断是否为空就会冲突,所以我们用空数组指向的rear的下一个来判断是否与front相等来判断.

四.循环队列入队

在这里插入图片描述

五.循环队列出队

在这里插入图片描述

六.循环队列的遍历

在这里插入图片描述

七.循环队列获取长度

在这里插入图片描述

八.总结

循环队列是一种基于数组实现的队列数据结构,它的特点是可以通过循环利用数组的空间来实现高效的出队和入队操作。循环队列中通常会用到两个指针,分别指向队首和队尾。当队满时,队尾指针会绕回到数组的开头;当队空时,队首和队尾指针相等。循环队列在实际应用中常用于实现缓冲区等场景,可以提高空间利用率和操作效率。

相关文章:

【数据结构与算法】循环队列

循环队列 一.循环队列的引入二.循环队列的原理三.循环队列判断是否为满或空1.是否为空2.是否为满 四.循环队列入队五.循环队列出队六.循环队列的遍历七.循环队列获取长度八.总结 一.循环队列的引入 还记得我们顺序队列的删除元素嘛,我们有两种方式,一种是将数组要删除元素后面…...

为什么推荐使用@RequiredArgsConstructor代替@Autowired?

首先说一下前提: 项目中已经使用了Lombok,否则添加 Lombok 可能会增加项目的复杂度和构建时间。如果依赖项是可选的或可能在运行时改变,则使用字段注入或 setter 注入可能更为合适。 正文: 在 Spring 框架中,Autowir…...

ARM系列运行异常排查

一、断点指令BKPT BKPT指令产生软件断点中断,可用于程序的调试。它使处理器停止执行正常指令(使处理器中止预取指)而进入相应的调试程序。 BKPT指令的格式为:BKPT 16位的立即数 二、使用BKPT进行软件异常定位 假设异常发生后…...

Hive3:库操作常用语句

1、创建库 create database if not exists myhive;2、选择库 use myhive;3、查看当前选择的库 SELECT current_database();4、查看库详细信息 desc database myhive;可以查看数据文件在hdfs集群中的存储位置 5、创建库时制定hdfs的存储位置 create database myhive2 …...

C语言实现:C51单片机驱动LCD屏幕显示字符串(Proteus+Keil)

在Proteus中绘制电路原理图 我使用的版本是Protues8.16 ,Protues特别擅长仿真单片机及其外围设备,支持多种类型的微控制器,如8051、HC11、PIC、AVR、ARM、MSP430等,也可以设计pcb板,还能3D建模 1.新建工程 在 Start 栏中点击 …...

暄桐好作业之《临沈周〈东庄图册〉局部》

暄桐是一间传统美学教育教室,创办于2011年,林曦是创办人和授课老师,教授以书法为主的传统文化和技艺,皆在以书法为起点,亲近中国传统之美,以实践和所得,滋养当下生活。      其中“暄桐好作…...

Qt3D创建3D物体步骤

使用Qt3D接口创建3D物体的步骤大致有以下几步: 1.创建一个3D窗口 2.创建根实体 3.创建物体实体,父指针为根实体 4.创建立体图形,即物体网格,设置物体的属性 5.给立体图形添加材质,添加坐标位置,添加纹理,添加其他效果 6.创建摄像头,设置摄像头的属性,父指针为根…...

UDP程序设计

UDP协议概述 UDP,User Datagram Protocol,用户数据报协议,是一个简单的面向数据报(package-oriented)的传输层协议,规范为:RFC 768。 UDP提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去…...

计算机网络—电路、分组、报文交换—图文详解

计算机网络—电路、分组、报文交换 计算机网络中的数据传输方式可以根据数据的处理方式和网络资源的使用方式分为电路交换、分组交换和报文交换三种类型。 这些方式在网络设计和数据传输过程中起到了不同的作用和效果。 1. 电路交换(Circuit Switching&#xff0…...

linux下交叉编译licensecc

本文章只做个人笔记用 下载地址: #https://github.com/open-license-manager/licensecc.git #下面地址下不下来就是用第一个去官网下载git clone --recursive https://github.com/open-license-manager/licensecc.git 编译前准备3个库:openssl&#x…...

模型剪枝综述

目录 1 深度神经网络的稀疏性: 2 剪枝算法分类: 3 具体的剪枝方法包括: 4 剪枝算法流程: 5 几种常见的剪枝算法: 6 结构化剪枝和非结构化剪枝各有其优缺点: 7 剪枝算法对模型精度的影响 8 影响剪枝…...

破解监控难题,局域网电脑监控软件哪家强?

现在的环境,企业要想茁壮成长,员工的高效工作那可是关键中的关键。但不少老板都发现了一个头疼的问题,员工上班老是偷懒,这可怎么行?今天,就来给大家详细说道说道几款出色的局域网电脑监控软件,…...

Linux--Socket编程TCP

前文:Socket套接字编程 TCP的特点 面向连接:TCP 在发送数据之前,必须先建立连接。可靠性:TCP 提供了数据传输的可靠性。面向字节流:TCP 是一个面向字节流的协议,这意味着 TCP 将应用程序交下来的数据看成是…...

Android Studio导入源码

在有源码并且编译环境可用的情况下: 1.生成导入AS所需的配置文件 在源码的根目录执行以下命令: source build/ensetup.sh lunch 要编译的项目 make idegen //这一步会生成out/host/linux-x86/framework/idegen.jar development/tools/idegen/idegen.sh…...

UE5 UE4 使用python进行编辑器操作

使用UE 4.25以上版本后,python代码改动相对较少。 如下类库在4.20/21/22等早起版本不适用,建议查询UE的python文档 unreal.EditorAssetLibrary 1.获取当前选中的资源(Content中) # 获取当前选中的资产selected_assets unreal.E…...

区块链技术在智能城市中的创新应用探索

随着全球城市化进程的加速和信息技术的快速发展,智能城市成为了未来城市发展的重要方向。在智能城市建设中,区块链技术作为一种去中心化、安全和透明的分布式账本技术,正逐渐展现出其在优化城市管理、提升公共服务和增强城市安全性方面的潜力…...

解决mysql事件调度器重启服务后自动失效的问题

前段时间为通过mysql事件生成测试数据,今天发现数据在10:57后停止了CREATE EVENT IF NOT EXISTS insert_random_data ON SCHEDULE EVERY 10 SECOND DO INSERT INTO test (createtime, random_number) VALUES (NOW(), FLOOR(RAND() * 100));检查事件状态&#…...

mybatis开启二级缓存

例子 mybatis-config.xml <configuration><settings><setting name"cacheEnabled" value"true"/></settings><environments default"development"><environment id"development"><transacti…...

Oracle大型数据库管理(一)Oracle大型数据库管理全面指南

文章目录 Oracle大型数据库管理全面指南引言1. Oracle数据库概述1.1 什么是Oracle数据库1.2 Oracle数据库的主要特点 2. Oracle数据库部署2.1 安装前的准备工作2.1.1 操作系统要求2.1.2 硬件要求2.1.3 软件环境要求 2.2 Oracle数据库的安装2.2.1 用户和目录的创建2.2.2 安装Ora…...

Arcgis中查找空间距离范围内字段相等的数据

背景 目前有两份空间点数据&#xff0c;需要通过点数据1查找100米空间距离范围内点数据2中与点数据1某个字段相同的数据 步骤 1、arcgis中加载数据 2、空间连接 结果&#xff0c;从下面这两个字段可以看出&#xff0c;点数据1在100米空间距离范围内有多个点数据2 3、选择数…...

终极指南:OpenAI Python SDK推理强度参数调优实战

终极指南&#xff1a;OpenAI Python SDK推理强度参数调优实战 【免费下载链接】openai-python The official Python library for the OpenAI API 项目地址: https://gitcode.com/GitHub_Trending/op/openai-python 掌握OpenAI Python SDK推理强度参数配置&#xff0c;让…...

setup-php 故障排除手册:常见问题解决方案与调试技巧

setup-php 故障排除手册&#xff1a;常见问题解决方案与调试技巧 【免费下载链接】setup-php shivammathur/setup-php: 是一个用于安装和配置 PHP 的脚本&#xff0c;可以方便地安装和配置 PHP 环境。适合对 PHP、环境配置和想要实现 PHP 环境配置的开发者。 项目地址: https…...

5个场景下的BiliTools资源管理实战技巧:高效获取与管理B站内容的全攻略

5个场景下的BiliTools资源管理实战技巧&#xff1a;高效获取与管理B站内容的全攻略 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode.com/GitHub_Tre…...

文墨共鸣镜像详解:开箱即用的中文语义相似度分析解决方案

文墨共鸣镜像详解&#xff1a;开箱即用的中文语义相似度分析解决方案 1. 引言&#xff1a;当传统美学遇上现代AI 在信息爆炸的时代&#xff0c;我们每天都要处理大量文本内容。无论是商业文案的比对、学术观点的对照&#xff0c;还是日常交流的理解&#xff0c;快速判断两段文…...

如何3分钟免费为Figma安装中文界面插件:设计师效率提升完整指南

如何3分钟免费为Figma安装中文界面插件&#xff1a;设计师效率提升完整指南 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 作为一名中文设计师&#xff0c;你是否曾在使用Figma时因为英…...

【CTF | pwn篇】从栈溢出到ROP:ctfshow pwn实战技巧精讲

1. 栈溢出基础&#xff1a;从零开始理解漏洞利用 栈溢出是PWN领域最经典的漏洞类型之一&#xff0c;也是CTF比赛中出现频率最高的题型。我们先从一个最简单的例子开始&#xff0c;看看如何利用栈溢出漏洞控制程序执行流程。 1.1 栈的结构与函数调用 当程序调用函数时&#xff0…...

Display Driver Uninstaller完全指南:解决显卡驱动残留的系统级清理方案

Display Driver Uninstaller完全指南&#xff1a;解决显卡驱动残留的系统级清理方案 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-dri…...

软考系统架构设计师论文 —— 负载均衡架构知识点(4)

接前一篇文章:软考系统架构设计师论文 —— 负载均衡架构知识点(3) 本文内容参考: 负载均衡策略和技术的基本指南 解析常见的负载均衡算法-CSDN博客...

4个突破性功能步骤:全面兼容让Switch手柄实现跨平台操控自由

4个突破性功能步骤&#xff1a;全面兼容让Switch手柄实现跨平台操控自由 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcod…...

RVC效果对比实测:原声vs克隆声,你能听出区别吗?

RVC效果对比实测&#xff1a;原声vs克隆声&#xff0c;你能听出区别吗&#xff1f; 1. 引言&#xff1a;AI语音克隆技术的新突破 想象一下&#xff0c;你最喜欢的歌手正在用你的声音唱歌&#xff0c;或者你的播客节目突然有了专业播音员的音色。这不再是科幻场景&#xff0c;…...