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

循环队列的基本操作(3种处理方式,2种实现方式)

为区分队空队满有3种处理方式:
①牺牲一个单元
②增设表示元素个数的数据成员
③增设tag数据成员

1.front->队头元素,rear->队尾元素下一位置

1.1牺牲一个单元

1.1.1定义

#define MaxSize 50
typedef struct {ElemType data[MaxSize];int front, rear;
}SqQueue;

1.1.2初始化

void InitQueue(SqQueue &Q) {Q.rear = Q.front = 0;
}

1.1.3判空

bool isEmpty(SqQueue Q) {if(Q.rear = Q.front)return true;elsereturn false;
}

1.1.4 入队

bool EnQueue(SqQueue &Q, ElemType x) {if((Q.rear + 1) % MaxSize == Q.front)//队满报错return false;Q.data[Q.rear] = x;Q.rear = (Q.rear + 1) % MaxSize;return true;
}

1.1.5出队

bool DeQueue(SqQueue &Q, ElemType &x) {if(Q.rear = Q.front)//队空报错return false;x = Q.data[Q.front];Q.front= (Q.front+ 1) % MaxSize;return true;
}

1.1.6 读队头元素

bool GetHead(SqQueue &S, ElemType &x) {if(Q.rear = Q.front)//队空报错return false;x = Q.data[Q.front];return true;
}

1.2增设表示元素个数的数据成员

1.2.1定义

#define MaxSize 50
typedef struct {ElemType data[MaxSize];int front, rear;int size;
}SqQueue;

1.2.2初始化

void InitQueue(SqQueue &Q) {Q.rear = Q.front = 0;Q.size = 0;
}

1.2.3判空

bool isEmpty(SqQueue Q) {if(Q.size == 0)return true;elsereturn false;
}

1.2.4 入队

bool EnQueue(SqQueue &Q, ElemType x) {if(Q.size == MaxSize)//队满报错return false;Q.data[Q.rear] = x;Q.rear = (Q.rear + 1) % MaxSize;return true;
}

1.2.5出队

bool DeQueue(SqQueue &Q, ElemType &x) {if(Q.size == 0)//队空报错return false;x = Q.data[Q.front];Q.front= (Q.front+ 1) % MaxSize;return true;
}

1.2.6 读队头元素

bool GetHead(SqQueue &S, ElemType &x) {if(Q.size == 0)//队空报错return false;x = Q.data[Q.front];return true;
}

1.3增设tag数据成员

1.3.1定义

#define MaxSize 50
typedef struct {ElemType data[MaxSize];int front, rear;int tag;
}SqQueue;

1.3.2初始化

void InitQueue(SqQueue &Q) {Q.rear = Q.front = 0;Q.tag = 0;
}

1.3.3判空

bool isEmpty(SqQueue Q) {if(Q.rear = Q.front && Q.tag == 0)return true;elsereturn false;
}

1.3.4 入队

bool EnQueue(SqQueue &Q, ElemType x) {if(Q.rear = Q.front && Q.tag == 1)//队满报错return false;Q.data[Q.rear] = x;Q.rear = (Q.rear + 1) % MaxSize;tag = 1;return true;
}

1.3.5出队

bool DeQueue(SqQueue &Q, ElemType &x) {if(Q.rear = Q.front && Q.tag == 0)//队空报错return false;x = Q.data[Q.front];Q.front= (Q.front+ 1) % MaxSize;tag = 1;return true;
}

1.2.6 读队头元素

bool GetHead(SqQueue &S, ElemType &x) {if(Q.rear = Q.front && Q.tag == 0)//队空报错return false;x = Q.data[Q.front];return true;
}

2.front->队头元素,rear->队尾元素

2.1牺牲一个单元

2.1.1定义

#define MaxSize 50
typedef struct {ElemType data[MaxSize];int front, rear;
}SqQueue;

2.1.2初始化

void InitQueue(SqQueue &Q) {Q.front = 0;Q.rear = MaxSize - 1;
}

2.1.3判空

bool isEmpty(SqQueue Q) {if((Q.rear + 1) % MaxSize == Q.front)return true;elsereturn false;
}

2.1.4 入队

bool EnQueue(SqQueue &Q, ElemType x) {if((Q.rear + 2) % MaxSize == Q.front)//队满报错return false;Q.rear = (Q.rear + 1) % MaxSize;Q.data[Q.rear] = x;return true;
}

2.1.5出队

bool DeQueue(SqQueue &Q, ElemType &x) {if((Q.rear + 1) % MaxSize == Q.front)//队空报错return false;x = Q.data[Q.front];Q.front= (Q.front+ 1) % MaxSize;return true;
}

2.1.6 读队头元素

bool GetHead(SqQueue &S, ElemType &x) {if((Q.rear + 1) % MaxSize == Q.front)//队空报错return false;x = Q.data[Q.front];return true;
}

2.2增设表示元素个数的数据成员

2.2.1定义

#define MaxSize 50
typedef struct {ElemType data[MaxSize];int front, rear;int size;
}SqQueue;

2.2.2初始化

void InitQueue(SqQueue &Q) {Q.front = 0;Q.rear = MaxSize - 1;Q.size = 0;
}

2.2.3判空

bool isEmpty(SqQueue Q) {if(Q.size == 0)return true;elsereturn false;
}

2.2.4 入队

bool EnQueue(SqQueue &Q, ElemType x) {if(Q.size == MaxSize)//队满报错return false;Q.rear = (Q.rear + 1) % MaxSize;Q.data[Q.rear] = x;return true;
}

2.2.5出队

bool DeQueue(SqQueue &Q, ElemType &x) {if(Q.size == 0)//队空报错return false;x = Q.data[Q.front];Q.front= (Q.front+ 1) % MaxSize;return true;
}

2.2.6 读队头元素

bool GetHead(SqQueue &S, ElemType &x) {if(Q.size == 0)//队空报错return false;x = Q.data[Q.front];return true;
}

2.3增设tag数据成员

2.3.1定义

#define MaxSize 50
typedef struct {ElemType data[MaxSize];int front, rear;int tag;
}SqQueue;

2.3.2初始化

void InitQueue(SqQueue &Q) {Q.front = 0;Q.rear = MaxSize - 1;Q.tag = 0;
}

2.3.3判空

bool isEmpty(SqQueue Q) {if((Q.rear + 1) % MaxSize == Q.front && Q.tag == 0)return true;elsereturn false;
}

2.3.4 入队

bool EnQueue(SqQueue &Q, ElemType x) {if((Q.rear + 1) % MaxSize == Q.front && Q.tag == 1)//队满报错return false;Q.rear = (Q.rear + 1) % MaxSize;Q.data[Q.rear] = x;tag = 1;return true;
}

2.3.5出队

bool DeQueue(SqQueue &Q, ElemType &x) {if((Q.rear + 1) % MaxSize == Q.front && Q.tag == 0)//队空报错return false;x = Q.data[Q.front];Q.front= (Q.front+ 1) % MaxSize;tag = 1;return true;
}

2.3.6 读队头元素

bool GetHead(SqQueue &S, ElemType &x) {if((Q.rear + 1) % MaxSize == Q.front && Q.tag == 0)//队空报错return false;x = Q.data[Q.front];return true;
}

相关文章:

循环队列的基本操作(3种处理方式,2种实现方式)

为区分队空队满有3种处理方式: ①牺牲一个单元 ②增设表示元素个数的数据成员 ③增设tag数据成员 1.front->队头元素,rear->队尾元素下一位置 1.1牺牲一个单元 1.1.1定义 #define MaxSize 50 typedef struct {ElemType data[MaxSize];int fron…...

react的特点

React的特点包括以下几个方面: 组件化:React将用户界面分解成小而独立的组件,每个组件都有自己的状态和属性。通过组合这些组件,可以构建复杂而灵活的用户界面。 虚拟DOM:React使用虚拟DOM(Virtual DOM&am…...

MATLAB实现图像处理:图像识别、去雨、去雾、去噪、去模糊等等(附上20个完整仿真源码)

图像处理是计算机视觉领域的重要研究方向,MATLAB是一种功能强大的数学计算软件,可以用于图像处理和分析。下面是一些简单的MATLAB图像处理代码示例,包括图像增强、边缘检测、形态学处理、特征提取等。 文章目录 1. 图像增强2. 边缘检测3. 形态…...

cmake stm32 模板

文件结构 ├─.vscode ├─build ├─cmake ├─Drivers │ ├─CMSIS │ │ ├─Device │ │ │ └─ST │ │ │ └─STM32F1xx │ │ │ ├─Include │ │ │ └─Source │ │ │ └─Templates │ │ └─Include │ └─STM32F1xx_HAL_Driver │ ├─Inc │ │ └─Leg…...

STM32 UDS Bootloader开发-上位机篇-CANoe制作(2)

文章目录 前言CANoe增加NodeCAPL脚本获取GUI中的参数刷写过程诊断仪在线接收回调函数发送函数总结前言 在上一篇文章中,介绍了UDS Bootloadaer上位机软件基于CANoe的界面设计。本文继续介绍CAPL脚本的编写以实现刷写过程。 CANoe增加Node 在开始编写CAPL之前,需要在Simula…...

实例026 随机更换主界面背景

实例说明 如果开发的软件用户使用频率非常高,可以为程序设计随机更换背景的程序。这样不但可以使用户心情愉快,也增加了软件的人性化设计。下面的界面就是一个随机更换主界面的例子,效果如图1.26所示。 技术要点 随机更换主界面背景使用了…...

PostgreSQL 简洁、使用、正排索引与倒排索引、空间搜索、用户与角色

PostgreSQL使用 PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。PostgreSQL 9.0 :支持64位windows系统,异步流数据复制、Hot Standby;生产环境主流的版本是PostgreSQL 12 BSD协议 与 GPL协议 …...

querySubObject(“Cells(int,int)“, j,i)->property(“Value“)读不到数据问题

在使用qt读取Excel文件内容的时候,使用下列方式: worksheet->querySubObject("Cells(int,int)", j,i)->property("Value").toString(); 不会报错,但读取不到数据。多次尝试发现应该将property改为dynamicCall 下…...

AutoSAR系列讲解(实践篇)10.2-EcuM的上下电流程

目录 一、上电(StartUp) 二、下电(Shutdown) 三、睡眠(Sleep) 上下电,说白了就是给Ecu上下电后,Ecu的代码执行顺序。这里还讲到了大家可能经常会用到的Sleep流程,主要就是可以归纳为以下这张图,大家 掌握这张图就基本掌握了EcuM的上下电流程了。这张图的具体内容博…...

科研院所用泛微搭建信创办公平台,统一办公,业务融合,安全便捷

国家全面推动重要领域的信创改造工作,要求到2027年底,对综合办公、经营管理、生产运营等系统实现“应替尽替、能替则替”。 科研机构作为智力、知识密集型机构,承载着大量数据、信息资产,数字化程度高,业务系统多样&a…...

基于LoRA进行Stable Diffusion的微调

文章目录 基于LoRA进行Stable Diffusion的微调数据集模型下载环境配置微调过程 推理WebUI部署 基于LoRA进行Stable Diffusion的微调 数据集 本次微调使用的数据集为: LambdaLabs的Pokemon数据集 使用git clone命令下载数据集 git clone https://huggingface.co/…...

C++STL序列式容器——list容器及其常用操作(详解)

纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 💬文章目录 一.list容器基本概念二.list容器的常用操作list构造函数list迭代器获取list特性操作list元素操作list赋值操作list的交换、反转、排序、归并操作…...

【雕爷学编程】MicroPython动手做(15)——掌控板之AB按键2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…...

Spring Boot中整合MyBatis(基于xml方式基于注解实现方式)

一、前提准备 在Spring Boot中整合MyBatis时,你需要导入JDBC(不需要手动添加)和Druid的相关依赖。 JDBC依赖:在Spring Boot中整合MyBatis时,并不需要显式地添加JDBC的包依赖。这是因为,当你添加mybatis-sp…...

ChatGPT漫谈(三)

AIGC(AI Generated Content)指的是使用人工智能技术生成的内容,包括文字、图像、视频等多种形式。通过机器学习、深度学习等技术,AI系统可以学习和模仿人类的创作风格和思维模式,自动生成大量高质量的内容。AIGC被视为继用户生成内容(UGC)和专业生成内容(PGC)之后的下…...

树、二叉树(C语言版)详解

🍕博客主页:️自信不孤单 🍬文章专栏:数据结构与算法 🍚代码仓库:破浪晓梦 🍭欢迎关注:欢迎大家点赞收藏关注 文章目录 🍊树的概念及结构1. 树的概念2. 树的相关概念3.树…...

vue中Cascader 级联选择器实现-修改实现

vue 的cascader研究了好长时间&#xff0c;看了官网给的示例&#xff0c;上网查找了好多信息&#xff0c;才解决修改时回显的问题&#xff0c;现将方法总结如下&#xff1a; vue代码&#xff1a; <el-form-item label"芯片" prop"firmware"> <…...

C语言实现三子棋游戏

test.c源文件 - 三子棋游戏测试 game.h头文件 - 三子棋游戏函数的声明 game.c源文件 - 三子棋游戏函数的实现 主函数源文件&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1#include"game.h" //自己定义的用"" void menu() {printf("*************…...

机器学习深度学习——softmax回归从零开始实现

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——向量求导问题 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮助 …...

Windows如何安装Django及如何创建项目

目录 1、Windows安装Django--pip命令行 2、创建项目 2.1、终端创建项目 2.2、在Pycharm中创建项目 2.3、二者创建的项目有何不同 2.4、项目目录说明 1、Windows安装Django--pip命令行 安装Django有两种方式&#xff1a; pip命令行【推荐--简单】手动安装【稍微复杂一丢丢…...

告别API依赖!实测具备“看屏幕”能力的Agent,实在Agent如何重构企业自动化天花板?

在2026年这个被业界公认为“智能体元年”的当下&#xff0c;企业数字化转型已从简单的“系统上线”演进到“全量自动化”的深水区。然而&#xff0c;传统API接口的局限性与老旧系统的数据孤岛&#xff0c;始终是横亘在降本增效路上的大山。本文由「企服AI产品测评局」带来深度实…...

提升开发效率:用快马一键生成自动化twitter x数据采集工具

今天想和大家分享一个提升开发效率的小技巧——如何快速搭建一个自动化采集Twitter X数据的工具。作为一个经常需要分析社交媒体数据的人&#xff0c;我发现手动收集数据实在太费时间了&#xff0c;于是研究了一下如何用Python实现自动化采集。 需求分析 首先明确我们需要实现的…...

怎么将AI生成的图片转成可编辑的矢量图?

做科研的宝子们谁懂啊&#xff01;绘制科研插图真的太费时间了&#x1f62d; 要么得花几天啃专业绘图软件&#xff0c;要么找素材拼凑导致视觉割裂、标注出错&#xff0c;好不容易用AI生成一张满意的图&#xff0c;却发现无法编辑、分辨率不足&#xff0c;连期刊投稿的基本要求…...

ViGEmBus技术指南:构建跨平台游戏控制器兼容解决方案

ViGEmBus技术指南&#xff1a;构建跨平台游戏控制器兼容解决方案 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 如何解决游戏控制器的跨平台兼容性难题&…...

终极指南:使用Docker快速部署WriteGPT AI创作平台

终极指南&#xff1a;使用Docker快速部署WriteGPT AI创作平台 【免费下载链接】WriteGPT 基于开源GPT2.0的初代创作型人工智能 | 可扩展、可进化 项目地址: https://gitcode.com/gh_mirrors/wri/WriteGPT WriteGPT是一款基于开源GPT-2.0的初代创作型人工智能框架&#x…...

hiSHtory 配置管理完全指南:从基础设置到高级调优

hiSHtory 配置管理完全指南&#xff1a;从基础设置到高级调优 【免费下载链接】hishtory Your shell history: synced, queryable, and in context 项目地址: https://gitcode.com/gh_mirrors/hi/hishtory hiSHtory 是一款革命性的 shell 历史记录工具&#xff0c;它不仅…...

RexUniNLU部署教程:Kubernetes集群中水平扩缩容RexUniNLU服务的Helm Chart实践

RexUniNLU部署教程&#xff1a;Kubernetes集群中水平扩缩容RexUniNLU服务的Helm Chart实践 1. 为什么需要在K8s中部署RexUniNLU&#xff1f; 你可能已经试过在本地跑通 python test.py&#xff0c;也成功启动了 server.py 提供的 FastAPI 接口。但当真实业务流量进来——比如…...

保姆级教程:在Linux上用Flume 1.7.0 + Spark 2.4.7搭建实时日志流处理管道

企业级实时日志处理实战&#xff1a;Flume 1.7.0与Spark 2.4.7深度整合指南 在当今数据驱动的商业环境中&#xff0c;实时日志处理能力已成为企业技术栈的核心竞争力。想象一下电商大促期间每秒数万条的用户行为日志&#xff0c;或是金融交易系统中毫秒级延迟的风控信号处理——…...

HarmonyOS 6学习:Canvas实现圆角矩形进度条

在HarmonyOS应用开发中&#xff0c;进度条是展示任务进度、加载状态和数据可视化的重要组件。虽然系统提供了Progress组件&#xff0c;但在需要高度定制化、复杂视觉效果或特殊交互的场景下&#xff0c;开发者常常面临以下困境&#xff1a;样式限制&#xff1a;Progress组件难以…...

基于STM32LXXX的无线收发芯片(CMT2300A-EQR)应用程序设计

一、简介: CMT2300A是一款超低功耗,高性能,适用于各种127至 1020 MHz无线应用的OOK,(G)FSK射频收发器。它是 CMOSTEK NextGenRFTM射频产品线的一部分,这条产品线 包含完整的发射器,接收器和收发器。CMT2300A的高集成 度,简化了系统设计中所需的外围物料。高达+20 dBm及-…...