《面试准备》c/c++ 数组实现循环queue

2023-10-29

代码: 

#include <iostream>
#define MAX 5
using namespace std;

class Queue{
private:
    int a[MAX];
    int Front;
    int Rear;
public:
    Queue();
    bool IsEmpty();
    bool IsFull();
    bool EnQueue(int data);
    int DeQueue();        //返回出队列的值
    bool ergodic();       //遍历
};

/******初始化******/
Queue::Queue(){
    this->Front = 0;
    this->Rear = 0;
}

bool Queue::IsEmpty(){
    if(this->Front==this->Rear)
        return true;
    else
        return false;
}

bool Queue::IsFull(){
    if((this->Rear+1)%MAX==this->Front)
        return true;
    else
        return false;
}

bool Queue::EnQueue(int data){
    if(IsFull())
        return false;
    this->a[this->Rear] = data;
    this->Rear = (this->Rear+1)%MAX;
    return true;
}

int Queue::DeQueue(){
    if(IsEmpty())
        return false;
    int data = this->a[this->Front];
    this->Front = (this->Front+1)%MAX;
    return data;
}

bool Queue::ergodic(){
    if(IsEmpty())
        return false;
    if(this->Rear>this->Front){
        for(int i=this->Front;i<this->Rear;i++)
            cout<<this->a[i]<<" ";
    }
    if(this->Rear<this->Front){
        for(int i=this->Front;i<MAX;i++)
            cout<<this->a[i]<<" ";
        for(int i=0;i<this->Rear;i++)
            cout<<this->a[i]<<" ";
    }
    return true;
}

int main()
{
    Queue q;
    q.EnQueue(1);
    q.EnQueue(2);
    q.EnQueue(3);
    q.EnQueue(4);
    int a = q.DeQueue();
    cout << a << endl;
    q.EnQueue(5);
    q.ergodic();
    return 0;
}

测试:

 加上template后可实现对任意类型的操作

代码: 

#include <iostream>
#define MAX 5
using namespace std;

template <typename T>
class Queue{
private:
    T a[MAX];
    int Front;
    int Rear;
public:
    Queue();
    bool IsEmpty();
    bool IsFull();
    bool EnQueue(T data);
    T DeQueue();        //返回出队列的值
    bool ergodic();       //遍历
};

/******初始化******/
template <typename T>
Queue<T>::Queue(){
    this->Front = 0;
    this->Rear = 0;
}

template <typename T>
bool Queue<T>::IsEmpty(){
    if(this->Front==this->Rear)
        return true;
    else
        return false;
}

template <typename T>
bool Queue<T>::IsFull(){
    if((this->Rear+1)%MAX==this->Front)
        return true;
    else
        return false;
}

template <typename T>
bool Queue<T>::EnQueue(T data){
    if(IsFull())
        return false;
    this->a[this->Rear] = data;
    this->Rear = (this->Rear+1)%MAX;
    return true;
}

template <typename T>
T Queue<T>::DeQueue(){
    if(IsEmpty())
        return false;
    T data = this->a[this->Front];
    this->Front = (this->Front+1)%MAX;
    return data;
}

template <typename T>
bool Queue<T>::ergodic(){
    if(IsEmpty())
        return false;
    if(this->Rear>this->Front){
        for(int i=this->Front;i<this->Rear;i++)
            cout<<this->a[i]<<" ";
    }
    if(this->Rear<this->Front){
        for(int i=this->Front;i<MAX;i++)
            cout<<this->a[i]<<" ";
        for(int i=0;i<this->Rear;i++)
            cout<<this->a[i]<<" ";
    }
    return true;
}

int main()
{
    Queue<float> q;
    q.EnQueue(1);
    q.EnQueue(2.3);
    q.EnQueue(3);
    q.EnQueue(4.55);
    float a = q.DeQueue();
    cout << a << endl;
    q.EnQueue(5);
    q.ergodic();
    return 0;
}

 测试:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《面试准备》c/c++ 数组实现循环queue 的相关文章

  • Pygame 事件队列

    我想知道是否有一种使用方法poll or get 而不从队列中删除事件 在我的游戏中 我检查不同位置的输入 不仅在主循环中 有时我需要在不同位置检查相同的事件 但是当我检查它时 它会将其从队列中删除 我尝试使用peek 但问题是我无法获得与
  • 从队列中获取最后 n 个项目

    我看到的一切都是关于列表的 但这是关于events queue queue 这是一个包含我想要提取的对象的队列 但是我如何从该队列中获取最后 N 个元素 根据定义 你不能 你可以做的是使用循环或理解get the first 你不能get从
  • stack,foreach,顺序错误?

    当使用Java的for每个语法 Stack不对输出元素使用 LIFO 排序 考虑以下代码 import java util Queue import java util Stack import java util LinkedList p
  • PHP 高级作业队列

    我正在使用 cron 制作一个一天包含 2000 个作业的脚本 意味着这是服务器端并自动完成所有作业 但该作业需要同时运行 10 个 或指定数量的作业 作业 就像你看到 IDM 互联网下载管理器 一样 有一个队列功能 它一次运行多个作业 如
  • 具有 async/await 风格函数的 async.queue

    我正在尝试创建一个函数 该函数从对象数组构建队列 然后通过调用多个函数来处理每个对象 处理函数是异步函数 在需要排队之前 我使用异步 等待模式实现了这些函数 我认为这是必要的 因为每个都依赖于前一个的输出 并且我不想有大量嵌套的 Promi
  • 从 Laravel 外部推送到 Laravel 队列 (NodeJS)

    我有一个 Laravel 5 3 安装作为纯 API 应用程序运行 需要从多个不同的应用程序进行连接 一切都工作正常 毕竟我们谈论的是 Laravel P 除了我不明白一件事 我有一个 MQTT 服务器 它正在侦听来自多个设备的消息 无论是
  • 如何将列表转换为队列来实现先进先出

    考虑 public List
  • ConcurrentQueue 保存对象的引用或值? “内存不足”异常

    排队到 ConcurrentQueue 的对象是被复制到队列还是仅复制到它们的引用 我不明白任何场景 解释 我这样定义了一个 ConcurrentQueue BufferElement is a class I created privat
  • 可观察队列?

    是否有人编写了实现 INotifyCollectionChanged 的 Net 通用队列版本 或者是否已经在 Net 框架深处隐藏了某个版本 快速搜索没有显示任何结果 但接口很简单 扩展 Queue 类并添加对该接口的支持几乎是微不足道的
  • 优雅地实现 ExecutorServices 的队列长度指示器

    为什么 哦 为什么不java util concurrent为其提供队列长度指标ExecutorService是 最近我发现自己在做这样的事情 ExecutorService queue Executors newSingleThreadE
  • 如何在没有线程或任务队列的情况下在 Flask 中运行后台作业

    我正在使用 Flask restplus 构建 REST API 我的端点之一获取从客户端上传的文件并运行一些分析 该作业最多需要 30 秒 我不希望这项工作阻塞主进程 因此端点将立即返回 200 或 201 响应 作业仍然可以运行 结果将
  • 装修调度系统

    我想使用多个处理器并行执行线性运算 将复杂的数学函数拟合到某些数据集 假设我的机器有 8 个核心 我想要容纳 1000 个数据集 我期望的是某个系统将 1000 个数据集作为队列 并将它们发送到 8 个核心进行处理 因此它首先将 1000
  • 队列上的 IEnumerable 迭代器是否应该使项目出列

    我创建了一个自定义通用队列 它实现了通用 IQueue 接口 该接口使用 System Collections Generic 命名空间中的通用队列作为私有内部队列 示例已清除不相关的代码 public interface IQueue
  • 使用 Javascript 进行速率限制并将 ajax 调用排队为每 15 秒一次

    我有一个应用程序 每次用户执行某些操作时都会自动发送推文 如果用户愿意 可以轻松地每秒执行一次该操作 Twitter 的速率限制表示 它关注 15 分钟内发生了多少条推文 从技术上讲 我认为我总是低于 15 分钟标记 但 Twitter 似
  • RabbitMQ 上的 Nack 和拒绝

    我想处理消费者从队列中获取的不成功的消息并将它们重新排队 想象一下我有这样的情况 P gt foo bar baz gt C 其中 foo bar 和 baz 是消息 如果消费者读到baz但出了问题 我可以使用basic reject or
  • 通过值获取 std::queue 中元素的索引

    有没有一种简单的方法来获取元素在 a 中的位置std queue通过它在 C 中的值 例如 std queue
  • Azure 有害队列计数警报规则

    在之前的一个项目中 我设法设置了一个警报规则 该规则会查看有害队列消息计数 并在队列中存在某些内容时 每天一次 使用 webhook 向 slack 发出警报 我试图找到它在 Azure 中的位置 因为看起来事情已经发生了变化 如果这不是
  • C# 创建函数队列

    我写了一个名为 QueueManager 的类 class QueueManager Queue functionsQueue public bool IsEmpty get if functionsQueue Count 0 return
  • 如何获取队列中的第 n 个项目?

    我的应用程序中有许多队列和优先级队列 我想轻松访问这些队列中的第 n 个项目 但没有看到使用 API 实现此目的的简单方法 我想我可以创建一个Iterator并迭代到第 n 个元素或使用toArray index 但似乎应该有一个更简单的方
  • 如何自定义BlockingQueue的阻塞行为

    我想创建一个阻塞队列 它根据自定义规则而不是队列中的项目数量来阻止生产者 例如 生产者生成一些文件并放入队列中 消费者经过一番分析后将它们转移到特定位置 对于上述场景 如果队列中的总文件大小达到某个阈值 我希望生产者等待生成新文件 如果总大

随机推荐

  • C++11中的右值引用及move语义编程

    C 11中的右值引用及move语义编程 C 0x中加入了右值引用 和move函数 右值引用出现之前我们只能用const引用来关联临时对象 右值 造孽的VS可以用非const引用关联临时对象 请忽略VS 所以我们不能修临时对象的内容 右值引用
  • 迪杰斯特拉 (Dijkstra)算法求最短路径问题

    目录 算法介绍 应用实例 算法步骤 代码实现 算法介绍 迪杰斯特拉 Dijkstra 算法是典型最短路径算法 用于计算一个结点到其他结点的最短路径 它的主要特点是以起始点为中心向外层层扩展 广度优先搜索思想 直到扩展到终点为止 应用实例 算
  • 基于SpringBoot和协同过滤算法的体育商城系统的实现

    最近帮小伙伴做了个基于SpringBoot和协同过滤算法的体育商城系统 文章目录 一 SpingBoot介绍 二 协同过滤算法介绍 三 系统功能需求 四 系统功能演示 五 系统核心代码演示 一 SpingBoot介绍 现如今后台开源框架主流
  • CSS3之border-sizing属性功能get!

    今天在进行文本框样式编写的过程中遇到一个问题 当我将input元素的宽度定义为 width 100 之后 如果再增加 padding 或者 border 则文本框会溢出父容器 是向外扩张的 解决方法 加入box sizing border
  • 管道/消息队列/共享内存

    管道通信 PIPE 管道通信方式的中间介质是文件 通常称这种文件为管道文件 两个进程利用管道文件进行通信时 一个进程为写进程 另一个进程为读进程 写进程通过写端 发送端 往管道文件中写入信息 读进程通过读端 接收端 从管道文件中读取信息 两
  • json.dumps()和json.loads()、json.dump()和json.load()的区分

    1 json dumps 和json loads 是json格式处理函数 1 json dumps 函数是将一个Python数据类型列表进行json格式 字符串格式 的编码 可以这么理解 json dumps 函数是将字典转化为字符串 js
  • 生成随机色多种方法

    方法一 颜色随机 0 9 a f function getColor var str var arr 0 1 2 3 4 5 6 7 8 9 a b c d e f for var i 0 i lt 6 i str arr Math flo
  • oracle自定义存储过程:删除表(无论表是否存在)和检测表是否存在

    oracle删除表 如果表不存在 就报错 在跑大型脚本 脚本长且耗时的时候 比较麻烦 一般希望的是点开始然后脚本运行到结束 不可能一直盯着屏幕等弹出提示手工点掉 mysql就很好有drop table if not exist功能 CREA
  • 前端获取北京时间_js获取标准北京时间

    JS如何获取北京时间JS如何获取网络时间 因为本地时间可以修改 所以需要获取网络服务器的要获取服务器时间 一般是在页面提交后 在后台获龋 如果用js获取服务器时间 可以通过ajax方式 Node js中怎么获取北京时间 即构造了一个日期 获
  • dubbo-admin的编译安装

    1 美图 1 dubbo admin源码下载 Github地址 https github com apache incubator dubbo 注意 master和2 6 x分支上是没有dubbo admin模块的 源码clone到本地之后
  • HJ32 密码截取(模块化编程)(重点关注)

    描述 Catcher是MCA国的情报员 他工作时发现敌国会用一些对称的密码进行通信 比如像这些ABBA ABA A 123321 但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解 比如进行下列变化 ABBA gt 12ABBA
  • tftp的配置

    首先配置tftp 配置过程如下 首先需要安装tftpd的相关软件包 sudo apt get install xinetd tftpd tftp 设置xinetd的tftp服务 具体为在 etc xinetd d 目录下创建一个tftp文件
  • Angular使用Promise解决多个异步回调问题

    Promise的基本用法 var p1 new Promise resolve reject gt setTimeout resolve 1000 done p1 then data gt console log data done ang
  • 配置文件jdk和hadoop和scala和spark

    bashrc profile java验证java version export JAVA HOME usr lib jvm java export JRE HOME JAVA HOME jre export CLASSPATH JAVA
  • rsync常见问题及解决办法(亲测)

    错误一 password file must not be other accessible continuing without password file Password rsync客户端路径是否写错 权限设置不对 需要再次输入密码
  • python数据结构与算法篇:排序

    1 冒泡排序 英语 Bubble Sort 它重复地遍历要排序的数列 一次比较两个元素 如果他们的顺序错误就把他们交换过来 遍历数列的工作是重复地进行直到没有再需要交换 也就是说该数列已经排序完成 这个算法的名字由来是因为越小的元素会经由交
  • Linux下压缩文件夹命令

    tar zcvf 打包后生成的文件名全路径 要打包的目录 例子 把 xahot文件夹打包后生成一个 home xahot tar gz的文件 tar zcvf home xahot tar gz xahot zip 压缩方法 压缩当前的文件
  • 【ISO】Windows10系统ISO镜像怎么从微软官网下载?

    要自己安装正版系统 第一步就是要下载到正确的系统镜像 下载的方法很多 可以通过搜索 网盘 网站或者论坛等下载 但那都不是最正宗 最纯粹的的 通过这些渠道下载 偶尔 难免也会遇到些心术不正的人给你夹带点私货 从微软官网下载Windows10系
  • Spring多次request.getReader()解决方法

    Spring多次request getReader 解决方法 ServletRequest的getReader和getInputStream只能调用一次 开发中遇到一个需求 对http请求进行打点 其中有个字段是请求body 本来想的是写一
  • 《面试准备》c/c++ 数组实现循环queue

    代码 include