【数据结构/C++】栈和队列_循环队列

image.png
牺牲一个存储单元来判断队满。

#include<iostream>
using namespace std;
// 循环队列
#define MaxSize 10
typedef int ElemType;
typedef struct {ElemType data[MaxSize];int front, rear;
} SqQueue;
// 初始化队列
void InitQueue(SqQueue &Q) {// 判断队空 Q.rear == Q.frontQ.front = Q.rear = 0;
}
// 入队
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;
}
// 出队
bool DeQueue(SqQueue &Q, ElemType &x) {if (Q.front == Q.rear) {return false;}x = Q.data[Q.front];Q.front = (Q.front + 1) % MaxSize;return true;
}
// 遍历
void Traverse(SqQueue Q) {for (int i = Q.front; i < Q.rear; i++) {cout << Q.data[i] << " ";}cout << endl;
}
// 长度
int QueueLength(SqQueue Q) {return (Q.rear - Q.front + MaxSize) % MaxSize;
}
int main() {SqQueue Q;InitQueue(Q);ElemType x;EnQueue(Q, 1);EnQueue(Q, 2);EnQueue(Q, 3);EnQueue(Q, 4);DeQueue(Q, x);cout << "出队元素为:" << x << endl;cout << "队列长度为:" << QueueLength(Q) << endl;Traverse(Q);return 0;
}

image.png

特殊地,如果队尾指针指向的是队尾元素:

// 判断空
// 队尾指针的后一个位置就是队头指针
(Q.rear + 1) % MaxSize == Q.front
// 判断满
// 队尾指针的后两个位置就是队头指针,后一个位置为空

当然,还可以加一个变量比如 size 或者 tag 来进行判断。

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

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

相关文章

C++ Day10 STL02-适配器与算法 (本篇笔记16000字,整理不易,拿去赶快干)

函数对象 概念 重载函数调用运算符的类实例化的对象 , 就叫函数对象 . 又名仿函数 函数对象和 () 触发重载函数调用运算符的执行。 作用 : 为算法提供策略。 示例 class MyPrint { public:void operator()(char *s){cout<<s<<endl;} }; void test01() {MyPrint…

MySQL数据库入门到大牛_基础_16_变量、流程控制与游标

文章目录 1. 变量1.1 系统变量1.1.1 系统变量分类1.1.2 查看系统变量 1.2 用户变量1.2.1 用户变量分类1.2.2 会话用户变量1.2.3 局部变量1.2.4 对比会话用户变量与局部变量 2. 定义条件与处理程序2.1 案例分析2.2 定义条件2.3 定义处理程序2.4 案例解决 3. 流程控制3.1 分支结构…

四川劳动保障杂志社四川劳动保障编辑部四川劳动保障杂志2023年第10期目录

主题报道 四川抢抓“金九银十”招聘季多措并举稳就业促就业 举措频“上新” 金秋送岗忙 张玉芳; 2-5 法眼《四川劳动保障》投稿&#xff1a;cnqikantg126.com 筑牢长期护理保险基金安全防线 李科仲;赖晓薇; 6-7 调研 提升职业技能培训工作的举措 寇爵; 8-9 城乡…

实战中使用的策略模式,使用@ConditionalOnProperty实现根据环境注册不同的bean

场景复现 举个例子&#xff0c;针对不同的设备的内存的不同加载一些资源的时候需要采取不同的策略&#xff0c;比如&#xff0c;在内存比较大的设备&#xff0c;可以一次性加载&#xff0c;繁殖需要使用懒加载&#xff0c;这个时候我们就可以采用配置文件配置中心去控制了 Cond…

四川开启智能巡河形式,无人机水利行业应用再创新

在四川省某区域&#xff0c;复亚智能无人机系统以其独特的机场网格化部署得到成功应用&#xff0c;覆盖了该区域内多条市级、省级河流&#xff0c;成为水利行业的新亮点。这一先进系统以无人机水利行业应用为核心&#xff0c;通过网格化和信息化手段&#xff0c;实现了对水域环…

城市内涝积水监测系统,全方位监测城市内涝

在城市规划与防灾减灾的领域中&#xff0c;城市内涝积水监测系统的构建至关重要。随着城市化进程的加快&#xff0c;城市内涝问题日益凸显&#xff0c;对市民的生活质量和生命财产安全构成威胁。为了应对这一问题&#xff0c;建设一套高效、精准的城市内涝积水监测系统势在必行…

LeetCode Hot100 155.最小栈

题目&#xff1a; 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获…

PTA:猜帽子游戏 ,C语言

题目 宝宝们在一起玩一个猜帽子游戏。每人头上被扣了一顶帽子&#xff0c;有的是黑色的&#xff0c;有的是黄色的。每个人可以看到别人头上的帽子&#xff0c;但是看不到自己的。游戏开始后&#xff0c;每个人可以猜自己头上的帽子是什么颜色&#xff0c;或者可以弃权不猜。如…

鸿蒙开发ArkUI -常用布局

线性布局(Row/Column) 间距/主轴排列方式/交叉轴对齐方式 Column({}) {Column() {}.width(80%).height(50).backgroundColor(0xF5DEB3)Column() {}.width(80%).height(50).backgroundColor(0xD2B48C)Column() {}.width(80%).height(50).backgroundColor(0xF5DEB3) } .width(1…

组装自己的稳定扩散模型

在本文中&#xff0c;我们将利用 Hugging Face Diffusers 库的组件实现自己的稳定扩散模型&#xff0c;可以像 diffuser.diffuse() 一样简单地生成图像。 在线工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编…

三、【合成中的构图】

文章目录 在海报合成中&#xff0c;也会采用构图的思想来进行布局&#xff0c;像我们拍照摄影的时候&#xff0c;也会采用左右构图&#xff0c;居中构图&#xff0c;三点构图&#xff0c;对称构图&#xff0c;通过这些构图方式&#xff0c;合理的让各种素材结合在一起&#xff…

做外贸想赚客户的钱,先想想自己比别人强在哪

Nicky说她用搜到的客户邮箱信息&#xff0c;给客户发开发信&#xff0c;基本上是发一通都像石沉大海一样&#xff0c;没有激起任何水花。从软件中来的客户信息&#xff0c;有电话或者WhatsApp的&#xff0c;添加上了&#xff0c;有的客户会直接忽略&#xff0c;有的会问从哪里拿…

VC++、MFC中操作excel时,Rang和Rangs的区别是什么?

Rang 参考微软说明 作用 表示一个单元格、一行、一列、一个包含单个或若干连续单元格区域的选定单元格范围&#xff0c;或者一个三维区域。 说明 Range 的默认成员将不包含参数的调用转发至 Value 属性 如&#xff0c;someRange someOtherRange 等效于 someRange.Value …

C中指针的定义、表示法、类型和算术

0. 指针到底是什么&#xff1f; 在我们讨论指针的定义之前&#xff0c;让我们先了解一下当我们编写时会发生什么 int digit 42; 编译器保留一块内存来保存int值。该块的名称为digit&#xff0c;该块中存储的值为42。现在&#xff0c;为了记住该块&#xff0c;它被分配了一个地…

Mysql的二阶段提交

先看执行器与InnoDB引擎是如何更新一条指定的数据的 可以看到&#xff0c;InnoDB在写redo log时&#xff0c;并不是一次性写完的&#xff0c;而有两个阶段&#xff0c;Prepare与Commit阶段&#xff0c;这就是"两阶段提交"的含义。 为什么要写redo log&#xff0c;不…

echarts实际开发中遇到的问题

当tooltip内容过高时&#xff0c;增加滚动条 enterable:true, extraCssText: height:500px;overflow-y:auto;

https到底把什么加密了?

首先直接说结论&#xff0c; https安全通信模式&#xff0c;是使用TLS加密传输所有的http协议。再重复一遍&#xff0c;是所有&#xff01; 通常将TLS加密传输http这个通信过程称为https&#xff0c;如果使用协议封装的逻辑结构来表达就是&#xff1a; IP TCP TLS 【 HTTP 】…

(C++)string类的模拟实现

愿所有美好如期而遇 前言 我们模拟实现string类不是为了去实现他&#xff0c;而是为了了解他内部成员函数的一些运行原理和时间复杂度&#xff0c;在将来我们使用时能够合理地去使用他们。 为了避免我们模拟实现的string类与全局上的string类冲突(string类也在std命名空间中)&…

羊大师介绍,备孕阶段饮食规划及对羊奶的影响

备孕期是夫妻俩为了生育健康宝宝所准备的重要阶段&#xff0c;在这个阶段&#xff0c;营养的摄入对于双方的身体健康和胚胎的发育至关重要。而羊奶作为一种营养丰富的饮品&#xff0c;备孕期间是否能喝羊奶一直是备孕夫妇们关注的话题。本文小编羊大师将会详细解答这一问题&…

AIGC系列之:升级版的Stable Diffusion之SDXL介绍

目录 AIGC工具对比 DALL-E MidJourney Stable Diffusion 相关资料 SDXL介绍 SDXL生图效果 SDXL训练LoRA流程 AIGC工具对比 在目前的三大新兴文本转图像模型中&#xff0c;Stable Diffusion诞生得最晚&#xff0c;但由于拥有发展良好的开源社区&#xff0c;它的用户关注…