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

C++循环队列 经典示例

循环队列(Circular Queue),又称环形缓冲区,是一种常用的数据结构,特别适用于资源有限的场合,比如操作系统中的任务调度、网络数据缓冲等。循环队列在数组的基础上实现,逻辑上首尾相连,能够充分利用数组空间。

下面是一个用C++实现的循环队列示例:

#include <iostream>
using namespace std;class CircularQueue {
private:int *queue;int front;int rear;int size;int capacity;public:CircularQueue(int k) {capacity = k + 1;  // 多一个空间用于区分队列满和空queue = new int[capacity];front = 0;rear = 0;size = 0;}~CircularQueue() {delete[] queue;}bool enqueue(int value) {if (isFull()) {cout << "Queue is full" << endl;return false;}queue[rear] = value;rear = (rear + 1) % capacity;size++;return true;}bool dequeue() {if (isEmpty()) {cout << "Queue is empty" << endl;return false;}front = (front + 1) % capacity;size--;return true;}int Front() {if (isEmpty()) {cout << "Queue is empty" << endl;return -1;}return queue[front];}int Rear() {if (isEmpty()) {cout << "Queue is empty" << endl;return -1;}return queue[(rear - 1 + capacity) % capacity];}bool isEmpty() {return size == 0;}bool isFull() {return size == capacity - 1;}int getSize() {return size;}
};int main() {CircularQueue cq(5);  // 创建容量为5的循环队列cq.enqueue(10);cq.enqueue(20);cq.enqueue(30);cq.enqueue(40);cq.enqueue(50);cout << "Front element: " << cq.Front() << endl;  // 输出队首元素cout << "Rear element: " << cq.Rear() << endl;    // 输出队尾元素cq.dequeue();cq.dequeue();cout << "After dequeuing two elements:" << endl;cout << "Front element: " << cq.Front() << endl;  // 输出队首元素cout << "Rear element: " << cq.Rear() << endl;    // 输出队尾元素return 0;
}

这个示例中,CircularQueue 类实现了一个循环队列,支持以下操作:

  • enqueue(int value):向队列尾部添加一个元素。
  • dequeue():从队列头部移除一个元素。
  • Front():获取队首元素。
  • Rear():获取队尾元素。
  • isEmpty():检查队列是否为空。
  • isFull():检查队列是否已满。
  • getSize():获取当前队列中的元素个数。

循环队列的实现利用数组和两个指针(frontrear)来追踪队首和队尾的位置,通过取模操作来实现首尾相连的效果。

相关文章:

C++循环队列 经典示例

循环队列&#xff08;Circular Queue&#xff09;&#xff0c;又称环形缓冲区&#xff0c;是一种常用的数据结构&#xff0c;特别适用于资源有限的场合&#xff0c;比如操作系统中的任务调度、网络数据缓冲等。循环队列在数组的基础上实现&#xff0c;逻辑上首尾相连&#xff0…...

【程序大侠传】大表分库分表切换数据库类型导致pagehelper生成sql语法报错

前序 代码剑宗等级分明&#xff0c;其门下弟子等级划分如下&#xff1a; 入门弟子 刚刚拜入代码剑宗&#xff0c;学习基础编程语言和基本剑法&#xff08;语法和基础概念&#xff09;。他们的代码还显得生涩&#xff0c;但已经开始展现出对优雅代码的追求。 江湖小虾 初步掌握…...

7、Redis 队列与 Stream

引言 Redis 自 5.0 版本起引入了一种新的数据结构——Stream。这种数据结构不仅增加了 Redis 的数据处理能力&#xff0c;还使其在消息队列和数据流处理方面更具竞争力。Stream 提供了持久化、多播、消费组等功能&#xff0c;可以满足多种复杂的数据处理需求。 1. Redis Stre…...

FFT剖析

快速傅里叶变换 (fast Fourier transform) xn{x0,x1,…xn-1} (num:N) 旋转因子系数&#xff1a; d2pik/N 旋转因子 wk(n)(cos(dn)isin(dn)) n[0,N-1] y(k) sum(x(n)wk(n),0,N-1) y(k){y(0),y(1),…y(N-1)} 傅里叶级数 x(n)wk(n)的级数是&#xff1a; 1.d2pik/N 这个系数决…...

git clone报错RPC failed; curl 92 HTTP/2 stream 7 was not closed cleanly

问题描述 git clone github上的项目报错: RPC failed; curl 92 HTTP/2 stream 7 was not closed cleanly: CANCEL (err 8) 4796 bytes of body are still expected fetch-pack: unexpected disconnect while reading sideband packet early EOF fetch-pack: invalid index-pac…...

Apispec,一个用于生成 OpenAPI(Swagger)规范的 Python 库

目录 01什么是 Apispec&#xff1f; 为什么选择 Apispec&#xff1f; 安装与配置 02Apispec 的基本用法 生成简单的 API 文档 1、创建 Apispec 实例 2、定义 API 路由和视图 3、添加路径到 Apispec 集成 Flask 和 Apispec 1、安装…...

SpringBoot 自定义异常返回数据格式

Spring Boot 默认异常处理 当我们用 spring boot 开发接口是&#xff0c;当遇到异常时返回的数据格式是如下形式的 {"timestamp": "2024-07-06T02:48:55.79100:00","status": 404,"error": "Not Found","path":…...

【xinference】(15):在compshare上,使用docker-compose运行xinference和chatgpt-web项目,配置成功!!!

视频演示 【xinference】&#xff08;15&#xff09;&#xff1a;在compshare上&#xff0c;使用docker-compose运行xinference和chatgpt-web项目&#xff0c;配置成功&#xff01;&#xff01;&#xff01; 1&#xff0c;安装docker方法&#xff1a; #!/bin/shdistribution$(…...

【Unity 3D角色移动】

【Unity 3D角色移动】 在Unity 3D中实现角色移动通常涉及到几个关键步骤&#xff0c;包括设置角色的物理属性、处理输入、更新角色的位置以及动画同步。下面是实现基本3D角色移动的步骤和示例代码&#xff1a; 步骤1&#xff1a;设置角色的物理属性 角色通常使用Character Co…...

个人视角,社会影响力:自媒体的魅力所在

随着数字化时代的到来&#xff0c;自媒体正成为信息传播领域的一场革命。个人视角与社会影响力的结合&#xff0c;赋予了自媒体独特的魅力。在传统媒体受限制的同时&#xff0c;自媒体为每个人提供了表达自己观点和思想的自由。个体的真实视角使得自媒体在信息传播中发挥着重要…...

算法训练营day70

题目1&#xff1a;108. 冗余连接 (kamacoder.com) #include<iostream> #include<vector>using namespace std;int n; vector<int> father(10001, 0);void init() {for(int i 1;i < n;i) father[i] i; }int find(int u) {return u father[u] ? u : fa…...

EtherCAT转Profinet网关配置说明第二讲:上位机软件配置

EtherCAT协议转Profinet协议网关模块&#xff08;XD-ECPNS20&#xff09;&#xff0c;不仅可以实现数据之间的通信&#xff0c;还可以实现不同系统之间的数据共享。EtherCAT协议转Profinet协议网关模块&#xff08;XD-ECPNS20&#xff09;具有高速传输的特点&#xff0c;因此通…...

日志自动分析-Web---360星图GoaccessALBAnolog

目录 1、Web-360星图(IIS/Apache/Nginx) 2、Web-GoAccess &#xff08;任何自定义日志格式字符串&#xff09; 源码及使用手册 安装goaccess 使用 输出 3-Web-自写脚本&#xff08;任何自定义日志格式字符串&#xff09; 4、Web-机器语言analog&#xff08;任何自定义日…...

【面试八股文】java基础知识

引言 本文是java面试时的一些常见知识点总结归纳和一些拓展&#xff0c;笔者在学习这些内容时&#xff0c;特地整理记录下来&#xff0c;以供大家学习共勉。 一、数据类型 1.1 为什么要设计封装类&#xff0c;Integer和int区别是什么&#xff1f; 使用封装类的目的 对象化:…...

ssrf结合redis未授权getshell

目录 漏洞介绍 SSRF Redis未授权 利用原理 环境搭建 利用过程 rockylinux cron计划任务反弹shell 写公钥免密登录 ubuntu 写公钥免密登录 漏洞介绍 SSRF SSRF&#xff08;server side request forgrey&#xff09;服务端请求伪造&#xff0c;因后端未过滤用户输入&…...

魔法自如:精通 IPython %automagic 命令的切换艺术

魔法自如&#xff1a;精通 IPython %automagic 命令的切换艺术 在 IPython 的神奇世界里&#xff0c;魔术命令是其强大交互功能的核心。这些以 % 或 %% 开头的命令&#xff0c;能够执行一系列特殊的操作&#xff0c;从而增强用户的编程体验。但是&#xff0c;你是否知道&#…...

基于CentOS Stream 9平台搭建MinIO以及开机自启

1. 官网 https://min.io/download?licenseagpl&platformlinux 1.1 下载二进制包 指定目录下载 cd /opt/coisini/ wget https://dl.min.io/server/minio/release/linux-amd64/minio1.2 文件赋权 chmod x /opt/coisini/minio1.3 创建Minio存储数据目录&#xff1a; mkdi…...

shell-awk语法整理

shell-awk语法整理 前言基本语法内置变量1. $02. NF3. NR4. FS5. RS6. OFS7. ORS8. FILENAME9. FNR10. ARGV11. ENVIRON12. IGNORECASE13. RSTART 和 RLENGTH示例解释 内置函数循环语句&#xff08;后面的;可不加&#xff09;条件语句高级特性示例 特殊模式BEGINEND组合示例BEG…...

关于忠诚:忠于自己的良知、理想、信念

关于忠诚&#xff1a; 当我们面对公司、上司、爱人、恋人、合作伙伴还是某件事&#xff0c;会纠结离开还是留下&#xff0c;这里我们要深知忠诚的定义&#xff0c;我们不是忠诚于某个人、某件事、或者某个机构&#xff0c;而是忠诚于自己的良知&#xff0c;忠诚于自己的理想和…...

探索Linux:开源世界的无限可能

Linux是一款开源操作系统&#xff0c;它的起源可以追溯到上世纪90年代初。这个故事始于一个名叫Linus Torvalds的芬兰大学生&#xff0c;他在1983年开始编写一个用于个人电脑的操作系统内核。在他的努力下&#xff0c;Linux逐渐发展成为一个稳定而强大的操作系统。 然而&#…...

Element Plus:Vue 3企业级UI组件库的全方位解析与实践指南

Element Plus&#xff1a;Vue 3企业级UI组件库的全方位解析与实践指南 【免费下载链接】element-plus &#x1f389; A Vue.js 3 UI Library made by Element team 项目地址: https://gitcode.com/GitHub_Trending/el/element-plus Element Plus作为基于Vue 3的企业级UI…...

3大终极方案解决Amlogic设备U盘启动难题:从故障诊断到系统优化的完整指南

3大终极方案解决Amlogic设备U盘启动难题&#xff1a;从故障诊断到系统优化的完整指南 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s90…...

Flutter Web:混合开发的最佳实践

Flutter Web&#xff1a;混合开发的最佳实践一次编写&#xff0c;多端运行。Flutter Web 让前端开发更加高效。一、Flutter Web 的优势 作为一名追求像素级还原的 UI 匠人&#xff0c;我对跨平台解决方案有着严格的要求。Flutter Web 不仅让我们能够使用相同的代码库构建 Andro…...

【FastAPI】 + SQLAlchemy 异步 ORM 实现完整 CRUD 操作

&#x1f680;从零实战&#xff1a;FastAPI SQLAlchemy 异步 ORM 实现完整 CRUD 操作&#xff08;附完整代码&#xff09; 一、为什么要学「FastAPI SQLAlchemy 异步 ORM」&#xff1f; 在现代 Web 服务中&#xff0c;数据库是核心组件。然而&#xff0c;传统同步操作&#x…...

iOS/Android 集成游戏盾审核被拒?权限与合规配置修复

iOS/Android 集成游戏盾审核被拒&#xff1f;权限与合规配置修复做手游安全的开发者基本都碰到过&#xff1a;集成游戏盾 SDK 后&#xff0c;App Store 或 Google Play / 国内安卓渠道突然审核被拒。多数不是功能 bug&#xff0c;而是权限声明、隐私合规、SDK 行为踩了平台红线…...

终极音乐解析方案:music-api如何免费打通四大平台音频资源壁垒

终极音乐解析方案&#xff1a;music-api如何免费打通四大平台音频资源壁垒 【免费下载链接】music-api 各大音乐平台的歌曲播放地址获取接口&#xff0c;包含网易云音乐&#xff0c;qq音乐&#xff0c;酷狗音乐等平台 项目地址: https://gitcode.com/gh_mirrors/mu/music-api…...

Linux文件搜索新标杆:FSearch高效检索工具全攻略

Linux文件搜索新标杆&#xff1a;FSearch高效检索工具全攻略 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 在Linux系统中&#xff0c;面对日益增长的文件数据&#…...

如何用Excel实现3D打印GCode的完全控制:FullControl GCode Designer终极指南

如何用Excel实现3D打印GCode的完全控制&#xff1a;FullControl GCode Designer终极指南 【免费下载链接】FullControl-GCode-Designer Software for designing GCODE for 3D printing 项目地址: https://gitcode.com/gh_mirrors/fu/FullControl-GCode-Designer 想要真正…...

高效获取金融数据:pywencai驱动的量化投资新范式

高效获取金融数据&#xff1a;pywencai驱动的量化投资新范式 【免费下载链接】pywencai 获取同花顺问财数据 项目地址: https://gitcode.com/gh_mirrors/py/pywencai 在数据驱动投资决策的时代&#xff0c;快速获取高质量金融数据成为量化策略开发的核心竞争力。pywenca…...

GIS数据处理避坑指南:如何一键批量转换KMZ/KML并保留所有字段(附工具下载)

GIS数据处理实战&#xff1a;KMZ/KML批量转换与属性保留全流程解析 在GIS数据处理工作中&#xff0c;KMZ和KML格式的批量转换是一个高频需求&#xff0c;但许多用户在实际操作中常遇到属性丢失、坐标系错乱等问题。我曾在一个城市交通规划项目中&#xff0c;因为转换后的属性字…...