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

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.lryc.cn/news/247734.html

相关文章:

  • 智能客服核心技术——预测会话与答案生成
  • C语言——计算Fibonacci数列
  • 【ASP.NET CORE】.NET 6.0 NET CORE MVC连接SQLSERVER数据库
  • filebeat日志收集工具
  • 一文例说嵌入式 C 程序的内聚和耦合
  • python-爬虫(可直接使用)
  • Moonbeam生态项目分析 — — 去中心化交易所Beamswap
  • 自研Xilinx高性能PCIe多通道DMA控制器
  • 人工智能原理复习--知识表示(二)
  • 【SpringBoot篇】登录校验 — JWT令牌
  • leetcode每日一题34
  • 王者荣耀游戏制作
  • springboot post添加URL添加参数
  • 『 MySQL数据库 』插入查询结果
  • 【笔记】小白学习电路维修
  • linux简述进程
  • 由于设置了全局 QWidget 背景导致QT QCalendarWidget 表态背景异常
  • 数据库的重要你了解多少?如何保障数据库的安全?
  • 距离“全自动”漏洞挖掘又近了一步!腾讯安全大数据实验室论文入选ACM CCS 2023
  • docker搭建rabbit集群
  • 西南科技大学C++程序设计实验一(C++基础知识)
  • Rust内存布局
  • android 12 添加菜单
  • Map 的 5 种遍历方式
  • Linux的基本指令 ( 一 )
  • 【深度学习】学习率及多种选择策略
  • 具有“真实触感”的动捕数据手套mhand pro,提供更精确的动作捕捉
  • Mongodb使用killCursors停止运行的cursor
  • 电脑风扇转一下停一下,无法正常开机问题解决
  • 无需部署服务器,如何结合内网穿透实现公网访问导航页工具Dashy