队列(定义,基本操作,顺序存储,链式存储)

news2024/10/6 6:50:43

目录

  • 1.队列的定义
    • 1.重要术语
    • 2.基本操作
  • 2.队列的顺序存储
    • 1.基本操作
      • 1.初始化
      • 2.判空
      • 3.入队(循环队列)
      • 4.出队
      • 5.读队头
    • 2.判断队列已满/已空
  • 3.队列的链式存储
    • 1.基本操作(带头结点)
      • 1.初始化
      • 2.判空
      • 3.入队
      • 4.出队
      • 5.队满条件

1.队列的定义

队列( Queue)是只允许在一端进行插入,在另一端删除的线性表。
特点:先进入队列的元素先出队。(先进先出)First ln First Out ( FIFO)

1.重要术语

队头:允许册除的一端。
队尾:允许插入的一端。
空队列

2.基本操作

  1. InitQueue(&Q):初始化队列,构造一个空队列Q。
  2. DestroyQueue(&Q):销毁队列。销毁并释放队列Q所占用的内存空间。
  3. EnQueue(&Q,x):入队,若队列Q未满,将x加入,使之成为新的队尾。
  4. DeQueue(&Q,&x):出队,若队列Q非空,删除队头元素,并用x返回。
  5. GetHead(Q,&x):读队头元素,若队列Q非空,则将队头元素赋值给x。
  6. QueueEmpty(Q):判队列空,若队列Q为空返回true,否则返回false。

2.队列的顺序存储

静态数组存放数据元素,设置队头/队尾(front/rear)指针。

rear:指向队尾元素的后一个位置(下个应该插入的位置)
front:指向队头元素。

在这里插入图片描述

1.基本操作

1.初始化

在这里插入图片描述

2.判空

在这里插入图片描述

3.入队(循环队列)

在这里插入图片描述

模运算将无限的整数域映射到有限的整数集合{0,1,2,…, b-1}上,将存储空间在逻辑上变成了“环状”。
因此将这种存储空间在为环状的队列称为循环队列

在这里插入图片描述

循环队列已满的条件:队尾指针的再下一个位置是队头,即 ( Q . r e a r + 1 ) % M a x S i z e = = Q . f r o n t (Q.rear+1)\%MaxSize==Q.front (Q.rear+1)%MaxSize==Q.front.
代价:牺牲一个存储单元。

4.出队

在这里插入图片描述

5.读队头

在这里插入图片描述

2.判断队列已满/已空

①使用模运算的方式:
计算队列元素个数: ( r e a r + M a x S i z e − f r o n t ) % M a x S i z e (rear+MaxSize-front)\%MaxSize (rear+MaxSizefront)%MaxSize
队列已满的条件:队尾指针的再下一个位置是队头,即 ( Q . r e a r + 1 ) % M a x S i z e = = Q . f r o n t (Q.rear+1)\%MaxSize==Q.front (Q.rear+1)%MaxSize==Q.front.

②在队列的结构体定义中加入一个size变量记录当前队列的长度
插入成功size++;
删除成功size–;

③结构体中设置一个标记变量tag,记录最近一次操作为删除或者插入
每次删除操作成功时,都令tag=0;
每次插入操作成功时,都令tag=1;
只有删除操作,才可能导致队空。
只有插入操作,才可能导致队满。
队满条件: f r o n t = = r e a r & & t a g = = 1 front == rear \&\& tag == 1 front==rear&&tag==1
队空条件: f r o n t = = r e a r & & t a g = = 0 front == rear \&\& tag ==0 front==rear&&tag==0

3.队列的链式存储

在这里插入图片描述

1.基本操作(带头结点)

1.初始化

在这里插入图片描述

2.判空

在这里插入图片描述

3.入队

在这里插入图片描述

4.出队

在这里插入图片描述

5.队满条件

链式存储:一般不会队满,除非内存不足。

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

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

相关文章

腾讯广告RACE曝光归因模型

今天我们以腾讯广告RACE曝光归因模型为例(以下简称RACE模型),来聊聊行业在衡量广告效果上的努力与成效。 第一类:衡量转化以及转化过程的归因 如同前面所讲,如果只是衡量ROI,对广告投放的效果衡量就只有一…

idea配置插件JRebel and XRebel

激活 点击Help—>JRebel—>Activation 激活地址: http://server.52zhaoyue.cn/b56c9b61-2e80-4e31-82b4-15271a93e8c7 b56c9b61-2e80-4e31-82b4-15271a93e8c7生成地址https://www.guidgen.com/ 激活邮箱: 自由 激活及确认 方案1:激活后直接显示 激活信息…

第二证券:北交所30%的涨跌幅限制?

随着我国股市的不断发展,股市生意的涨跌幅束缚也成为了一个备受注重的论题。在北交所,股票的涨跌幅束缚为30%,这一束缚是否合理呢?本文将从多个角度进行剖析。 首先,涨跌幅束缚对于股市的安稳起着重要的效果。股票价格…

CSS实现透明度效果的两种方法—— opacity 和 rgba()

在实际开发过程中&#xff0c;为了给用户呈现一些效果&#xff0c;我们需要控制元素的透明度。CSS 提供了 opacity 属性和 rgba() 函数给我们控制透明度&#xff0c;接下来通过一个例子来感受一下两种方法的区别。 <style>.transparentBox {display: inline-block;width…

telnet不是内部或外部命令

telnet不是内部或外部命令-telnet测试端口是否开放 在windows系统上开启Telnet服务 win8以上系统&#xff1a;"开始"→"控制器面板"→"程序和功能"→ 左侧"启动或关闭windows功能"→ 在"Windows功能"界面勾选Telnet服务器和…

java RMI 技术介绍和实践

在项目上发现了使用rmi技术&#xff0c;充电一波 RMI 概述 RMI&#xff08;Remote Method Invocation&#xff09;是一种 Java 编程语言中的远程过程调用&#xff08;RPC&#xff09;协议&#xff0c;用于在不同的Java虚拟机&#xff08;JVM&#xff09;之间进行通信和交互。它…

基于非精确线搜索算法三准则实现步长因子的求解

0、前言 朋友请我帮他做一个他们老师留的课堂作业&#xff0c;就自学了一下&#xff0c;我给他做了A准则和G准则的&#xff0c;W准则的留给他自己改了&#xff0c;也没有多难就是换一个判断条件就行了。 一、问题描述 二、要求 三、代码 3.1A准则加回退法 %帮别人做的小作业…

『MySQL快速上手』-⑤-数据类型

文章目录 1.数据类型有哪些2.数值类型2.1 tinyint 类型2.2 bit 类型2.3 小数类型2.3.1 float2.3.2 decimal 3.字符串类型3.1 char3.2 varchar3.2 char 和 varchar 比较 4.日期和时间类型5.enum和set 1.数据类型有哪些 MySQL支持多种数据类型&#xff0c;这些数据类型可用于定义…

第二证券:“闻”A股:注册制走深走实是活跃市场制度保障

不久前举办的中心金融工作会议明确要求“推动股票发行注册制走深走实”&#xff0c;无疑为本钱商场活泼进一步夯实制度保证。 上市公司是本钱商场的基石&#xff0c;其质量是决议本钱商场长期健康展开的重要因素之一。作为牵一发而动全身的重要革新&#xff0c;注册制的实施逐…

Pycharm加载项目时异常,看不到自己的项目文件

最近看到一个朋友问&#xff0c;他把项目导入pycharm为什么项目里的包不在项目里显示&#xff0c;只在projects file里显示&#xff1f;问题截图如下&#xff1a; Project里看不到自己的项目文件 只能在Project Files里看到自己的项目文件 问题解答 我也是偶然发现的这个方案…

CV计算机视觉每日开源代码Paper with code速览-2023.11.6

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【点云3D目标检测】&#xff08;NeurIPS2023&#xff09;…

NR SRS carrier switching

这篇看下SRS carrier switching的内容,这个feature 最早是LTE上提出的,在NR R15就引入了。个人没见过支持这个feature的UE,不过还是简单看下。 下面内容参照的是R17版本协议,顺序是背景->相关IE的配置结构及含义->DCI format 2_3->38.214中有关SRS carrier swtich…

代码随想录算法训练营第四十六天丨 动态规划part09

198.打家劫舍 思路 如果刚接触这样的题目&#xff0c;会有点困惑&#xff0c;当前的状态我是偷还是不偷呢&#xff1f; 仔细一想&#xff0c;当前房屋偷与不偷取决于 前一个房屋和前两个房屋是否被偷了。 所以这里就更感觉到&#xff0c;当前状态和前面状态会有一种依赖关系…

使用数据分析,识别设备异常

设备健康监测系统在工业领域中扮演着至关重要的角色&#xff0c;它能够帮助企业及时发现设备异常&#xff0c;预防故障&#xff0c;提高设备使用寿命和生产效率。而异常诊断技术则是设备健康监测系统中的核心部分&#xff0c;能够实现对设备异常情况的准确判断。根据设备状态数…

05预测识别-依托YOLO V8进行训练模型的识别——对视频中的目标进行跟踪统计

上文中详细介绍了如何对视频进行抽帧,并对帧的图像进行目标识别。但在日常工作中,我们也会遇到需要对目标进行跟踪统计的情况,比如我们需要连续统计某一类目标有多少个的时候,如果单纯从帧中抽取图像的话,系统将无法判断是否为同一目标,从而造成目标数量统计的重复,导致…

研发效能认证学员作品:持续集成与持续部署:软件高质量的关键丨IDCF

作者&#xff1a;李明君&#xff08;现就职某金融机构&#xff09; 研发效能&#xff08;DevOps&#xff09;工程师&#xff08;中级&#xff09;认证 在当今数字化时代&#xff0c;软件开发已经成为几乎所有行业的核心。随着市场的快速变化和客户需求的不断演进&#xff0c;软…

三国志14信息查询小程序(历史武将信息一览)制作更新过程06-复现小程序

0&#xff0c;所需文件 所需全部文件下载 文件总览&#xff1a; 代码&#xff1a; 数据库&#xff1a; 1&#xff0c;前期准备 假定你已经看过前面的文章&#xff0c;并完成了下列准备&#xff1a; &#xff08;1&#xff09;一台有公网IP的云服务器&#xff0c;服务器上…

day63--单调栈3

第一题&#xff1a;柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 直接单调栈&#xff1a; 接雨水利用的是3个柱子形成一个凹槽…

Power Apps-使用用户信息

插入一个文本组件&#xff0c;点击该组件&#xff0c;点击右侧边栏中的文本&#xff0c;在上方函数中写入如下内容就可以获取到用户信息了 "Hello!"&User().FullName//字符串拼接

华为交换机端口 access、trunk和hybrid收发数据规则

文章目录 1. 三个端口类型处理数据帧的汇总表2. access 端口3. trunk端口4. Hybrid 端口&#xff08;交换机的默认端口类型&#xff09;常用命令 1. 三个端口类型处理数据帧的汇总表 端口类型收到不带VLAN标签的帧的处理规则收到带VLAN标签的帧的处理规则发送帧时的处理规则用…