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

数据结构 / 队列 / 循环队列 / 概念

1. 定义

为充分利用向量空间,克服假溢出现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。循环队列是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。

2.简介

循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。 循环队列可以更简单防止伪溢出的发生,但队列大小是固定的。

在循环队列中,当队列为空时,有front=rear,而当所有队列空间全占满时,也有front=rear。为了区别这两种情况,规定循环队列最多只能有MaxSize-1个队列元素,当循环队列中只剩下一个空存储单元时,队列就已经满了。因此,队列判空的条件是front=rear,而队列判满的条件是front=(rear+1)%MaxSize。

图1

注意:

  • 队列下标从0开始
  • rear指向的是最后一个空位置

3.队列中元素的个数计算

  • 队列中元素的个数:len = ( rear - front + MaxSize ) % MaxSize
  • 解析:
    • 不考虑循环,队列的个数为rear-front + 1 - 1, +1是队列下标从0开始的,-1是rear指向最后空位置
    • 因为有循环,会有跨界的可能,先加上一个MaxSize, 相当于放在一个2xMaxSize中,避免了跨界,计算出长度后,多余部分用%MaxSize来纠正 (MaxSize % MaxSize 为0,2xMaxSize / MaxSize 也为0,不会对最后结果有影响)
      • 例1:
        • 如下图3,MaxSize=8,front=2, rear=0, rear正好跨过一轮
        • rear-front=-2, 这时加上MaxSize再%MaxSize,(0-2+8)%8=6         
      • 例2:
        • 如下图4,MaxSize=8,front=0, rear=6 
        • rear-front=6, (6-0+8)%8=6                        
图4
图4
图3
图3

                

参考: 循环队列_百度百科


目录:学习笔记快速链接                 

下一篇:循环队列 / 结构体定义和创建

相关文章:

数据结构 / 队列 / 循环队列 / 概念

1. 定义 为充分利用向量空间,克服假溢出现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。循环队列是把顺序队列首尾相连,把存储…...

elasticsearch 内网下如何以离线的方式上传任意的huggingFace上的NLP模型(国内闭坑指南)

es自2020年的8.x版本以来,就提供了机器学习的能力。我们可以使用es官方提供的工具eland,将hugging face上的NLP模型,上传到es集群中。利用es的机器学习模块,来运维部署管理模型。配合es的管道处理,来更加便捷的处理数据…...

vue中中的动画组件使用及如何在vue中使用animate.css

“< Transition >” 是一个内置组件&#xff0c;这意味着它在任意别的组件中都可以被使用&#xff0c;无需注册。它可以将进入和离开动画应用到通过默认插槽传递给它的元素或组件上。进入或离开可以由以下的条件之一触发&#xff1a; 由 v-if 所触发的切换由 v-show 所触…...

MATLAB 模型参考自适应控制 - Model Reference Adaptive Control

系列文章目录 文章目录 系列文章目录前言一、参考模型二、扰动与不确定性模型三、直接 MRAC名义模型参数更新间接 MRAC估计器模型和控制器增益参数更新学习修正参考文献 前言 模型参考自适应控制模块计算控制动作&#xff0c;使不确定的受控系统跟踪给定参考被控对象模型的行为…...

【如何用批处理文件实现自动编译Keil工程和C# Visual Studio工程】

如何用批处理文件实现自动编译Keil工程和C# Visual Studio工程 写个Bat 批处理文件&#xff0c;现自动编译Keil工程和C# Visual Studio工程。这样可以结合Python 实现复杂的操作。 编译Keil工程&#xff1a; echo off set UVC:\Keil_v5\UV4\UV4.exe set UV_PRO_PATHD:\worksp…...

大模型的实践应用11-“书生”通用大模型的搭建与模型代码详细介绍,以及快速使用方法

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用11-“书生”通用大模型的搭建与模型代码详细介绍,以及快速使用方法。“书生” 通用大模型是上海人工智能实验室研制的大模型,并且已经开源了“书生浦语”大模型70亿参数的轻量级版本InternLM-7B。InternLM-7B模型主要…...

【开发PaaS】基于Postgresql的开发平台Supabase

Supadase是开源的。我们选择可扩展的开源工具&#xff0c;使其易于使用。 Supadase不是Firebase的1对1映射。虽然我们正在构建Firebase提供的许多功能&#xff0c;但我们不会以同样的方式进行&#xff1a; 我们的技术选择大不相同&#xff1b;我们使用的一切都是开源的&#…...

前端开启gzip优化页面加载速度

生成gizp的打包资源&#xff0c;可以优化页面加载速度 打包的时候开启gzip可以很大程度减少包的大小&#xff0c;页面大小可以变为原来的30%甚至更小,非常适合线上部署, 但还记得需要服务端支持 1、前端配置compression-webpack-plugin 先安装&#xff1a;npm install compres…...

用Java写一个俄罗斯方块

目录 游戏规则 小方块类&#xff1a;Cell 七种图形类&#xff1a;I、J、L、O、S、T、Z J L O S T Z 俄罗斯方块游戏主类&#xff1a;Tetris 效果展示 游戏规则 由小方块组成的不同形状的板块陆续从屏幕上方落下来&#xff0c;玩家通过调整板块的位置和方向&#xff0c;使它…...

应用于智慧金融的AI边缘计算盒子+AI算法软硬一体化方案

传统金融营业厅存在运营管理模式落后、资源投放不平衡、从业人员培训效果不达预期、客户体验割裂等普遍现象&#xff1b; 部署英码数字金融解决方案&#xff0c;将助力企业从传统金融模式快速向数字金融模式转变&#xff0c;可针对每一个客户定制个性化“一对一”服务&#xff…...

目标检测——Faster R-CNN算法解读

论文&#xff1a;Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 作者&#xff1a;Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun 链接&#xff1a;https://arxiv.org/abs/1506.01497 代码&#xff1a;https://github.com/rbgirsh…...

Wireshark (一)安装入门 —— 软件介绍

文章目录 Wireshark是什么&#xff1f;为什么要使用Wireshark&#xff1f;相关网络分析工具软件对比 Wireshark是什么&#xff1f; Wireshark是一种开源网络协议分析器&#xff0c;它可以捕获和分析网络中传输的数据包。 用户可以使用Wireshark来诊断网络问题、了解网络协议的…...

Web框架与Django路由层

Web框架 一 web框架 Web框架&#xff08;Web framework&#xff09;是一种开发框架&#xff0c;用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式&#xff0c;也为web行为提供了一套通用的方法。web框架已经实现了很多功能&…...

什么是CAS, 什么是AQS

文章目录 什么是CAS, 什么是AQSCASAQS 什么是CAS, 什么是AQS CAS AQS AQS 全称是AbstractQueuedSynchronizer&#xff0c; 是juc 下一个核心的抽象类&#xff0c;用于构建各种同步器和锁 比如我们熟悉的 ReentrantLock、ReadWriteLock、CountDownLatch等等是基于AQS. 首先在…...

蓝桥杯每日一题2023.12.1

题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题目而言思路较为重要&#xff0c;实际可以转化为求两个数字对应的操作&#xff0c;输出最前面的数字即可 #include<bits/stdc.h> using namespace std; int main() {for(int i 1…...

正则表达式从放弃到入门(1):“正则表达式”是什么?

正则表达式从放弃到入门&#xff08;1&#xff09;&#xff1a;“正则表达式”是什么&#xff1f; 本博文转载自 这是一篇”正则表达式”扫盲贴&#xff0c;如果你还不理解什么是正则表达式&#xff0c;看这篇文章就对了。 如果你已经掌握了”正则表达式”&#xff0c;就不用再…...

SQL解惑 - 谜题2

文章目录 一、谜题描述二、分析三、答案四、总结 一、谜题描述 创建一个记录雇员缺勤率的数据库。使用的表结构如下&#xff1a;Absenteeism 主键&#xff1a;PRIMARY KEY (emp_id, absent_date) 字段名字段类型字段中文名字段描述emp_idINTERGER雇员id-absent_dateSTRING缺勤…...

FWT+高维前缀和:Gym - 103202M

https://vj.imken.moe/contest/597216#problem/F 考虑两个人的集合分别为 i , j i,j i,j&#xff0c;那么我们令 f ( i ⊗ j ) f(i\otimes j) f(i⊗j)&#xff0c;其中 f ( s ) f(s) f(s) 表示两个人不同集合恰好为 s s s&#xff0c;显然 f ( s ) f(s) f(s) 可以FWT求…...

【C++】string类的接口综合运用

目录​​​​​​​ 介绍&#xff1a; 一&#xff0c;string对象的构建 二&#xff0c;string类对象的容量操作 介绍&#xff1a; string容器我们之前已经粗略了解了基本增添、修改、删除、插入等基本功能&#xff0c;这里就不再做过多说明&#xff0c;接下来我们全面并详细…...

分布式ID生成框架Leaf升级踩坑

背景&#xff1a; 在项目中需要一个统一的拿单号等唯一ID的服务&#xff0c;就想起了之前用到的leaf&#xff0c;但是因为项目要求&#xff0c;leaf的版本不符合&#xff0c;需要做一些升级 项目地址&#xff1a;https://github.com/Meituan-Dianping/Leaf 升级点&#xff1…...

Phi-4-mini-reasoning真实案例:教育机构自动批题与答案生成应用

Phi-4-mini-reasoning真实案例&#xff1a;教育机构自动批题与答案生成应用 1. 教育场景中的智能批改需求 在教育培训行业&#xff0c;教师每天需要花费大量时间批改作业和试卷。传统的人工批改方式存在几个明显痛点&#xff1a; 时间成本高&#xff1a;一位数学老师批改50份…...

终极解决方案:5分钟完成DOCX到LaTeX的专业转换指南 [特殊字符]

终极解决方案&#xff1a;5分钟完成DOCX到LaTeX的专业转换指南 &#x1f680; 【免费下载链接】docx2tex Converts Microsoft Word docx to LaTeX 项目地址: https://gitcode.com/gh_mirrors/do/docx2tex 还在为Word文档转换LaTeX格式而烦恼吗&#xff1f;docx2tex就是你…...

Tetrazine-amine HCl salt,CAS:1416711-59-5,四嗪-氨基盐酸盐的描述

Tetrazine-amine HCl salt&#xff08;四嗪-氨基盐酸盐&#xff09;是一种结合了四嗪基团和氨基盐酸盐结构的化合物&#xff0c;在化学、生物医药和材料科学等领域具有广泛应用。一、基本信息中文名称&#xff1a;四嗪-氨基盐酸盐英文名称&#xff1a;Tetrazine-amine HCl salt…...

nli-distilroberta-base入门教程:零基础理解自然语言推理任务

nli-distilroberta-base入门教程&#xff1a;零基础理解自然语言推理任务 1. 什么是自然语言推理&#xff1f; 自然语言推理&#xff08;Natural Language Inference&#xff0c;简称NLI&#xff09;是让计算机理解两段文本之间逻辑关系的任务。想象一下老师批改作业的场景&a…...

从农田到实验室:大疆P4M多光谱数据与ASD地物波谱仪实测数据对比实操指南

从农田到实验室&#xff1a;大疆P4M多光谱数据与ASD地物波谱仪实测数据对比实操指南 当无人机掠过农田上空&#xff0c;搭载的多光谱传感器正在以厘米级分辨率记录作物的生理状态。这些数据能否真实反映地表反射特性&#xff1f;本文将以大疆P4M多光谱无人机与ASD FieldSpec系…...

显卡驱动彻底清理指南:用DDU解决90%的显示问题

显卡驱动彻底清理指南&#xff1a;用DDU解决90%的显示问题 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninstaller 当…...

保姆级教程:YOLOv8轻量化模型从训练到安卓部署全流程(附避坑指南)

保姆级教程&#xff1a;YOLOv8轻量化模型从训练到安卓部署全流程&#xff08;附避坑指南&#xff09; 在移动端实现实时目标检测一直是计算机视觉领域的热门方向。YOLOv8作为当前最先进的检测模型之一&#xff0c;其轻量化版本在安卓设备上的部署需求日益增长。本文将手把手带…...

Qwen2.5-VL图文助手体验:RTX 4090极速推理,支持对话历史和一键清空

Qwen2.5-VL图文助手体验&#xff1a;RTX 4090极速推理&#xff0c;支持对话历史和一键清空 如果你手头有一张RTX 4090显卡&#xff0c;想找一个能看懂图片、能聊天、还能帮你处理各种视觉任务的本地AI助手&#xff0c;那么今天要聊的这个工具&#xff0c;你可能会很感兴趣。 …...

Vivado项目文件太多分不清?这份FPGA开发必备的‘文件后缀速查手册’请收好

Vivado项目文件管理终极指南&#xff1a;从后缀识别到高效工作流 当你第一次打开一个成熟的Vivado项目文件夹时&#xff0c;那种面对几十种陌生文件后缀的茫然感&#xff0c;相信每个FPGA开发者都记忆犹新。就像走进了一个满是神秘符号的仓库&#xff0c;每个文件似乎都在向你发…...

Python内存管理策略对比评测报告(2024权威版):仅1种策略通过了金融级SLA压力测试,其余4种已淘汰

第一章&#xff1a;Python智能体内存管理策略对比评测报告&#xff08;2024权威版&#xff09;概述Python智能体&#xff08;如基于LLM的Agent框架、自主任务调度器、多步推理引擎&#xff09;在运行过程中面临高频对象创建、长生命周期缓存、跨线程引用共享等复杂内存场景。传…...