c++环形队列

c++环形队列

  • c++环形队列

c++环形队列

#pragma once#include <iostream>
#include <vector>/// <summary>
/// - 环形队列
/// - 不是线程安全
/// </summary>
/// <typeparam name="T"></typeparam>
template <typename T>
class CircularQueue
{int rear, front;int size;T* arr = nullptr;int _len = 0;
public:CircularQueue(int s){front = rear = -1;size = s;arr = new T[s];_len = 0;}~CircularQueue() {if (arr){delete[]arr;}};bool enQueue(T value){if ((front == 0 && rear == size - 1) ||((rear + 1) % size == front)){printf("\nQueue is Full");return false;}_len++;if (front == -1){front = rear = 0;arr[rear] = value;}else if (rear == size - 1 && front != 0){rear = 0;arr[rear] = value;}else{rear++;arr[rear] = value;}return true;};bool deQueue(T* val = nullptr) {if (front == -1){printf("\nQueue is Empty");return false;}_len--;T data = arr[front];arr[front] = -1;if (front == rear){front = -1;rear = -1;}else if (front == size - 1)front = 0;elsefront++;if (val){*val = data;}return true;};void autoQueue(T value) {while (enQueue(value) == false){deQueue();}};int len(){return _len;};std::vector<T> list(){std::vector<T> vals;if (front == -1){return vals;}if (rear >= front){for (int i = front; i <= rear; i++){vals.push_back(arr[i]);}}else{for (int i = front; i < size; i++){vals.push_back(arr[i]);}for (int i = 0; i <= rear; i++){vals.push_back(arr[i]);}}return vals;}void displayQueue() {std::vector<T> ls = list();printf("\n displayQueue: ");for (size_t i = 0; i < ls.size(); i++){printf("%d ", ls[i]);}printf("\n");};
};//int main()
//{
//	CircularQueue<int> q(5);
//	q.autoQueue(14);
//	q.autoQueue(22);
//	q.autoQueue(13);
//	q.autoQueue(-6);
//
//	q.displayQueue();
//
//	q.autoQueue(9);
//	q.autoQueue(20);
//	q.autoQueue(5);
//
//	q.displayQueue();
//
//	q.autoQueue(20);
//
//	q.displayQueue();
//	return 0;
//}

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

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

相关文章

应用在触摸式面板中的电容式触摸芯片

触摸屏又称为“触控屏”、“触控面板”&#xff0c;是一种可接收触头等输入讯号的感应式液晶显示装置&#xff1b;当接触了屏幕上的图形按钮时&#xff0c;屏幕上的触觉反馈系统可根据预先编程的程式驱动各种连结装置&#xff0c;可用以取代机械式的按钮面板&#xff0c;并借由…

2947. 统计美丽子字符串 I (前缀和)

Problem: 2947. 统计美丽子字符串 I 文章目录 题目思路Code 题目 给你一个字符串 s 和一个正整数 k 。 用 vowels 和 consonants 分别表示字符串中元音字母和辅音字母的数量。 如果某个字符串满足以下条件&#xff0c;则称其为 美丽字符串 &#xff1a; vowels consonants…

【JavaEE初阶】 HTTP协议和使用Fiddler抓包

文章目录 &#x1f38d;HTTP协议是什么&#xff1f;&#x1f340;应用层协议&#xff08;HTTP&#xff09;存在的意义&#x1f384;HTTP 协议的工作过程&#x1f334;HTTP 协议格式&#x1f333;Fiddler抓包工具的使用&#x1f6a9;如何抓HTTPS的包&#xff1f; &#x1f38b;抓…

npm私仓 verdaccio搭建 发布到私仓 使用

1.安装verdaccio # 全局安装 npm install -g verdaccio npm list -g verdaccio //查看verdaccio版本 2. 修改配置文件 vim /root/.config/verdaccio/config.yaml # 修改页面标题 web: title: CloudWise-Verdaccio # 上传npm包大小限制修改 max_body_size: 100mb # 允许…

Vue 文件压缩与解压缩

Vue 文件压缩与解压缩 文章目录 Vue 文件压缩与解压缩0. 安装1. 压缩2. 解压 0. 安装 安装 npm install jszip引入 import JSZip from jszip;使用 1. 压缩 async compressFiles() {// 创建jszip实例const zip new JSZip();// 添加需要压缩的文件const file1 Hello World…

flutter开发实战-当前界面无操作60s返回主页实现

flutter开发实战-当前界面无操作60s返回主页实现 当前界面无操作60s返回主页实现&#xff0c;主要是通过Timer来控制&#xff0c;当监听界面是否有pointerDown时候&#xff0c;如果超过60s仍没有操作&#xff0c;则返回主页。 一、Listener Listener是用来用于调用回调以响应…

【LeetCode周赛】LeetCode第373场周赛

LeetCode第373场周赛 目录 循环移位后的矩阵相似检查统计美丽子字符串 I交换得到字典序最小的数组统计美丽子字符串 II 循环移位后的矩阵相似检查 循环移位后的矩阵相似检查 分析&#xff1a; 简单模拟 这道题目就是一个简单的模拟题&#xff0c;直接按照题目意思进行判断即可…

JIRA部分数据库结构

表jiraissue&#xff08;问题表&#xff09; 字段 数据类型 是否为空 KEY 说明 ID decimal(18,0) NO PRI 主键 pkey varchar(255) YES MUL 查看主键&#xff0c;“项目ID” PROJECT decimal(18,0) YES MUL 项目外键&#xff0c;项目表外键 REPORTER varch…

【力扣】189. 轮转数组

【力扣】189. 轮转数组 文章目录 【力扣】189. 轮转数组1. 题目介绍2. 解法2.1 方法一&#xff1a;不太正规&#xff0c;但是简单2.2 方法二&#xff1a;使用额外的数组2.3 方法三&#xff1a;环状替换2.4 方法四&#xff1a;数组翻转 3. Danger参考 1. 题目介绍 给定一个整数…

社区新零售:重塑零售业的全新模式

社区新零售&#xff1a;重塑零售业的全新模式 近年来&#xff0c;新零售业成为了研究的焦点&#xff0c;它是一种以互联网为基础的零售形式。新零售通过运用先进技术手段&#xff0c;如大数据和人工智能&#xff0c;对商品的生产、流通和销售过程进行升级改造&#xff0c;重新构…

Android Camera Surface显示相关问题总结

1.默认创建的Preview Surface填充RGBA数据显示异常。 //界面创建的Surface format默认为4(RGB_565),而预览界面所需的格式是RGBA_8888 ANativeWindow_setBuffersGeometry(window, width, height, WINDOW_FORMAT_RGBA_8888); 2.调用ANativeWindow的dequeueBuffer出错&#xff…

系统入侵与提权

系统入侵与提权 一、信息搜集 1. 主机扫描 (1)扫描某个网段内存在的主机 (2)扫描主机开放的端口和服务 (3)扫描主机的操作系统和版本号 (4)扫描主机可能存在的已知漏洞 2. Web扫描 (1)查询域名和子域名信息 (2)查询whoid信息 (3)扫描Web应用的URL路径 (4)扫描Web应用后台管…

【实验记录】论文阅读(杂七杂八)

1.基于视觉语义路标的智能手机室内定位与建图研究_高煜昕 p19 介绍了智能终端的数据集ADVIO数据集&#xff0c;使用iPhone采集&#xff0c;针对视觉和惯导联合开发&#xff0c;具有描述真是复杂场景以及高质量真值的优点。 p20 论证了vins-mono、vins-fusion和orb-slam3等主流…

Go GORM简介

GORM&#xff08;Go Object-Relational Mapping&#xff09;是一个用于Go语言的ORM库&#xff0c;它提供了一种简单、优雅的方式来操作数据库。GORM支持多种数据库&#xff0c;包括MySQL、PostgreSQL、SQLite和SQL Server。以下是GORM的一些主要特性 全功能ORM&#xff1a;GORM…

提升企业网络安全的得力助手——EventLog Analyzer网络日志管理

在当今数字化时代&#xff0c;企业的网络安全问题变得尤为重要。为了更好地应对日益增多的威胁和安全漏洞&#xff0c;企业需要一种高效的网络日志管理工具&#xff0c;EventLog Analyzer便是其中一款卓越的解决方案。 EventLog Analyzer EventLog Analyzer是一款综合性的网络…

C#通过NPOI 读、写Excel数据;合并单元格、简单样式修改;通过读取已有的Excel模板另存为文件

文章目录 1 需要引用的DLL2 调用示例3 工具类 1 需要引用的DLL 2 调用示例 public static void WriteExcel() {string templateFile "F:\12312\excel.xlsx"; // 文件必须存在string outFile "F:\12312\" DateTime.Now.ToString("yyyyMMddHHmmssff…

逆向 tg 发送图片

开发工具 工具名称工具类型说明AndroidStuduo编辑工具开发工具jadxjava工具将apk解成java项目xposed插件工具插件tg版本9.7.5 分析源码的点&#xff1a; 发送图片的点 获取sendMessageParams 获取TLRPC$TL_photo 回调 实现 public void sendImg(String path, String…

NI自动化测试系统用电必备攻略,电源规划大揭秘

就像使用电脑之前需接通电源一样&#xff0c;自动化测试系统的电源选择也是首当其冲的问题&#xff0c;只不是这个问题更复杂。 比如&#xff0c;应考虑地理位置因素&#xff0c;因为不同国家或地区的公共电网所提供的线路功率有所不同。在电源布局和设备选型方面&#xff0c;有…

商城系统通过Kafka消息队列,实现订单的处理和状态更新

以下是一个简单的Spring Boot应用程序示例&#xff0c;演示如何使用Kafka实现订单的处理和状态更新。 首先&#xff0c;我们创建一个名为“order”的topic&#xff0c;在application.yaml配置文件中添加Kafka的配置&#xff1a; spring:kafka:bootstrap-servers: localhost:9…