循环队列|超详细|数据结构学习讲解与笔记

  • 队列元素先进先出
  • 队列只允许在线性表的一端进行操作,是一种操作受限的线性表

队列的基本操作

  • InItQueue(&Q)初始化队列,构造一个空队列 Q
  • EmptyQueue(Q)队列判空
  • FullQueue(Q)队列判满
  • EnQueue(&Q , x)入队操作
  • DeQueue(&Q , &x)出队操作
  • GetQueue(Q, &x)获取队头元素

队列的顺序存储

  • 用‘以数组实现的顺序表’来实现队列的顺序存储
  • 设置两个指针
    • 队头指针 front:指向队头元素
    • 队尾指针 rear:指向队尾元素的下一个位置
#define MaxSize 100
typedef struct{
    ElemType data[MaxSize];
    int front,rear;
}SqQueue; 

image.png
使用顺序存储存在的问题:

  • 当队列为空时 frontrear,但是,当队列存满元素 又全部出队后,此时队列为空,frontrear。但是此时两个指针已经到了数组最后,无法继续向后移动,此时数组为空也无法继续插入新元素。如果继续插入新元素,就会“假溢出”,假溢出就是数组中仍然有可以继续存入新数据的空位置,但无法继续插入了。
  • 当队列满时,rear+1MaxSize,如上图 4,当队列只有一个元素时,也是rear+1MaxSize

循环队列

为了解决上面顺序队列的问题,可以使用循环队列
image.png

  • 队空:rear==front
  • 队满:(rear+1)%MaxSize==front
  • 队列元素个数:(rear-front+MaxSize)%MaxSize

判断队列空与满的其他方式:

  • 定义队列类型时增加 size 变量表示元素个数。删除成功 size 减 1,插入成功 size 加 1。队空时 size0,队满时 size=MaxSize;两种情况都有 frontrear
  • 定义队列类型时增加 stag 变量。删除一个元素时 tag=0,插入一个元素时 tag=1。当 rearfront 时,如果 tag0,就是队空,如果 tag==1,就是队满

循环队列的基本操作

d1e30eccbbc8e1b65bf5b4e5d863ada.jpg

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

铌酸锂芯片与精密划片机:科技突破引领半导体制造新潮流

在当今快速发展的半导体行业中,一种结合了铌酸锂芯片与精密划片机的创新技术正在崭露头角。这种技术不仅引领着半导体制造领域的进步,更为其他产业带来了前所未有的变革。 铌酸锂芯片是一种新型的微电子芯片,它使用铌酸锂作为基底材料&#x…

HTTP/1.1 如何优化?

问你一句:「你知道 HTTP/1.1 该如何优化吗?」 我们可以从下面这三种优化思路来优化 HTTP/1.1 协议: 尽量避免发送 HTTP 请求在需要发送 HTTP 请求时,考虑如何减少请求次数减少服务器的 HTTP 响应的数据大小 下面,就针对这三种思路具体看看有哪些优化…

【代码移植】UNIX/Linux/POSIX代码程序移植到Windows系统平台技术汇总与经验分享

​ 图片来源 UNIX (Linux) to Windows代码移植技术路线 MinGW MinGW/MinGW-W64是用Windows原生系统API实现的,在Windows上运行的GCC编译工具链,可以编译出Windows原生应用程序。 MinGW编译工具链的生态位和微软官方的MSVC类似。 优点 MinGW编译出…

(每日持续更新)jdk api之ObjectInputValidation基础、应用、实战

博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿&…

fish终端下conda activate失败

【问题】fish终端下激活conda环境报错: >> conda activate base CondaError: Run conda init before conda activate ## 然而运行 conda init fish 仍旧无法解决【解决】 参考:https://github.com/conda/conda/issues/11079 方法一&#xf…

SQL-Labs靶场“1-5”关通关教程

君衍. 一、准备工作二、第一关 基于GET单引号字符型注入1、源码分析2、联合查询注入过程 三、第二关 基于GET整型注入1、源码分析2、联合查询注入过程 四、第三关 基于GET单引号变形注入1、源码分析2、联合查询注入过程 五、第四关 基于GET双引号字符型注入1、源码分析2、联合查…

JDBC核心技术

第1章 JDBC概述 第2章 获取数据库连接 第3章 使用PreparedStatement实现CRUD操作 第4章 操作BLOB类型字段 第5章 批量插入 第6章 数据库事务 第7章 DAO及相关实现类 第8章 数据库连接池 第9章 Apache-DBUtils实现CRUD操作图像 小部件

提高供应商收发文件效率的同时,如何保障数据的安全流转?

数据文件是制造业企业的核心竞争力,一旦发生数据外泄,就会给企业造成经济损失。之前就出现过像小米二级供应商因对其下游供应商管理不善,泄露了小米汽车前后保险杠的早期设计稿事件。制造业企业与供应商之间业务联系紧密,文件流转…

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(二)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型,由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”(そら sora),即天空之意,以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

AWK语言

一. awk awk:报告生成器,格式化输出。 在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,默认以空格或tab键作为分隔符作为分隔,并按模式或者条件执行编辑命令。而awk比较倾向于将一行…

预检请求:为跨域请求保驾护航(下)

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Python面向对象:什么是面向对象程序设计

编程范式 编程即写程序or代码,具体是指程序猿用特定的语法数据结构算法编写代码,目的是用来告诉计算机如何执行任务。 如果把编程的过程比喻为练习武功,那么编程范式指的就是武林中的各种流派,而在编程的世界里最常见的两大流派就…

numpy模块:从基础到高级的完整指南【第88篇—NumPy数组操作】

numpy模块:从基础到高级的完整指南 在Python的科学计算领域,NumPy模块是一个不可或缺的利器。它提供了丰富的数学函数和矩阵操作,使得数据处理、分析和科学计算变得更加高效。本文将带你初步了解NumPy模块,并通过实例代码深入解析…

JUC并发编程

JUC并发编程 JUC概述 JUC是java.util.concurrent包的简称,即Java并发编程工具包,目的是为了更好地支持高并发任务,让开发者进行多线程编程时有效减少竞争条件和死锁线程。 并发编程 一些基本概念: 进程与线程: 进…

C#,二叉搜索树(Binary Search Tree)的迭代方法与源代码

1 二叉搜索树 二叉搜索树(BST,Binary Search Tree)又称二叉查找树或二叉排序树。 一棵二叉搜索树是以二叉树来组织的,可以使用一个链表数据结构来表示,其中每一个结点就是一个对象。 一般地,除了key和位置…

基于 Python 深度学习的车辆特征分析系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

算法之力扣数青蛙

题目连接 文章目录 题目解析算法原理第一步第二步第三步第三步第四步指向o 代码讲解代码实现 题目解析 先给大家来讲解一下这个题目的意思吧,这个题目是说呢给你一个蛙叫的字符串让你去设计一个算法求出发出这种蛙叫最少需要几只青蛙。比如说第一个样例发出这种叫声…

端口号被占用怎么解决

1、快捷键"winR"打开运行,在其中输入"cmd"命令,回车键打开命令提示符。 2、进入窗口后,输入"netstat -ano"命令,可以用来查看所有窗口被占用的情况。 比如端口号为7680的端口被占用了&#xff0c…

Python入门:常用模块—logging模块

logging日志的分级: debug(),info(),warning(),error(),critical() 5个级别 最简单用法 1 2 3 4 import logging logging.warning("user [mike] attempted wrong password more than 3 times") logging.critical("server is down") 输出&…

【洛谷题解】P1601 A+B Problem(高精)

题目链接&#xff1a;AB Problem&#xff08;高精&#xff09; - 洛谷 题目难度&#xff1a;普及- 涉及知识点&#xff1a;高精度加法 题意&#xff1a; 分析&#xff1a;直接套用高精度加法模版即可 AC代码&#xff1a; #include<bits/stdc.h> using namespace std…