• 队列是一种 先进先出(First In First Out,FILO) 的种线性数据结构 。

代码是在动态数组二次封装,先阅读底层实现体验更佳 Array.h 点它

代码清单

#ifndef C___ARRAYQUEUE_H
#define C___ARRAYQUEUE_H
#include "Array.h" template<typename T>
class ArrayQueue{ public:
ArrayQueue();
ArrayQueue(const int capacity);
int getSize()const;
int getCapacity()const;
bool isEmpty()const;
void enqueue(const T&t);
T dequeue();
T getFront();
void print()const;
~ArrayQueue();
private:
Array<T>*arr;
}; template<typename T>
ArrayQueue<T>::ArrayQueue() {
arr = new Array<T>();
} template<typename T>
ArrayQueue<T>::ArrayQueue(const int capacity) {
arr = new Array<T>(capacity);
} template<typename T>
int ArrayQueue<T>::getSize()const {
return arr->getSize();
} template<typename T>
int ArrayQueue<T>::getCapacity()const{
return arr->getCapacity();
} template<typename T>
bool ArrayQueue<T>::isEmpty()const {
return arr->isEmpty();
} template<typename T>
void ArrayQueue<T>::enqueue(const T &t) {
arr->addLast(t);
} template<typename T>
T ArrayQueue<T>::dequeue() {
return arr->removeFirst();
} template<typename T>
T ArrayQueue<T>::getFront() {
return arr->getFirst();
} template<typename T>
void ArrayQueue<T>::print() const {
std::cout << "ArrayQueue: size = " << arr->getSize() << ", capacity = " << arr->getCapacity() << std::endl;
std::cout << "bottom ";
arr->print();
} template<typename T>
ArrayQueue<T>::~ArrayQueue() {
delete arr;
arr = nullptr;
} #endif //C___ARRAYQUEUE_H

main.cpp

int main()
{
ArrayQueue<int>*aq = new ArrayQueue<int>();
for(int i = 0;i<10;++i)
{
aq->enqueue(i);
}
aq->print();
cout<<endl;
cout<<"aq->isEmpty()"<<aq->isEmpty()<<endl;
cout<<endl;
cout<<"aq->getCapacity"<<aq->getCapacity()<<endl;
cout<<endl;
cout<<"aq->getSize()"<<aq->getSize()<<endl;
cout<<endl;
cout<<"aq->dequeue()"<<aq->dequeue()<<endl;
cout<<endl;
cout<<"aq->getFront()"<<aq->getFront()<<endl;
cout<<endl;
aq->print();
return 0;
}

复杂度分析

队列(ArrayQueue)的更多相关文章

  1. java——数组队列 ArrayQueue

    队列: Array: package Date_pacage; public class Array<E> { //叫它静态数组 //private int[] data; private ...

  2. 图解Java数据结构之队列

    本篇文章,将对队列进行一个深入的解析. 使用场景 队列在日常生活中十分常见,例如:银行排队办理业务.食堂排队打饭等等,这些都是队列的应用.那么队列有什么特点呢? 我们知道排队的原则就是先来后到,排在前 ...

  3. 用OC基于数组实现循环队列

    一.简言 使用数组实现循环队列时,始终会有一个空余的位置预留着,作为一个判决队列已满的条件(当然也可以采用其他方式).在前面已经用C++介绍了基本的算法,可以去回顾一下https://www.cnbl ...

  4. 数据结构之队列(queue)

    队列介绍 1.队列是一个有序列表,可以用数组或是链表来实现. 2.遵循先入先出的原则.即:先存入队列的数据,要先取出.后存入的要后取出. 应用场景 比如某某银行叫号系统: 数组模拟队列 队列本身是有序 ...

  5. java算法--普通队列

    数据结构队列 首先明确一下队列的概念. 队列是一种有序列表,使用数组的结构来存储队列的数据. 队列是一种先进先出的算法.由前端加入,由后端输出. 如下图: ​ 第一个图 第二个图 第三个图 这就是队列 ...

  6. 数据结构和算法(Golang实现)(14)常见数据结构-栈和队列

    栈和队列 一.栈 Stack 和队列 Queue 我们日常生活中,都需要将物品排列,或者安排事情的先后顺序.更通俗地讲,我们买东西时,人太多的情况下,我们要排队,排队也有先后顺序,有些人早了点来,排完 ...

  7. 【数据结构与算法】——队列(Queue)

    队列(Queue)的一个使用场景 银行排队的案例: 队列(Queue)介绍 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则.即:先存入队列的数据,要先取出来.后存入的要后取出来. ...

  8. HTTP2 学习

    一.HTTP1.x存在的问题 Http1.0时Connection无法复用,同一时间一个Connection只能处理一个request.Http1.1引入了Request pipelining来解决这 ...

  9. Java 内功修炼 之 数据结构与算法(一)

    一.基本认识 1.数据结构与算法的关系? (1)数据结构(data structure): 数据结构指的是 数据与数据 之间的结构关系.比如:数组.队列.哈希.树 等结构. (2)算法: 算法指的是 ...

  10. 算法入门 - 链表的实现及应用(Java版本)

    之前我们学习了动态数组,虽然比原始数组的功能强大了不少,但还不是完全纯动态的(基于静态数组实现的).这回要讲的链表则是正儿八经的动态结构,是一种非常灵活的数据结构. 链表的基本结构 链表由一系列单一的 ...

随机推荐

  1. 统信UOS系统开发笔记(四):从Qt源码编译安装之编译安装QtCreator4.11.2,并配置编译测试Demo

    前言   上一篇已经从Qt源码编译了Qt,那么Qt开发的IDE为QtCreator,本篇从源码编译安装QtCreator,并配置好构建套件,运行Demo并测试.   统信UOS系统版本   系统版本: ...

  2. Apple设备屏幕尺寸和方向

    表格中包括了各种型号的iPad.iPhone.以及iPod touch等设备的详细信息,涵盖了从iPad Pro到各代iPhone和iPod touch的多个型号. 这些信息可用于开发应用程序时优化界 ...

  3. collection.abc模块下的抽象基类UML类图说明

    说明 Iterable.Container和Sized 每个容器都应该继承这三个抽象基类,或者实现兼容的协议.Iterable通过__iter__方法支持迭代, Container通过__contai ...

  4. windows下redis安装与使用

    下载 redis下载地址 步骤,一直下一步按就完事了,记得勾选添加到环境配置 其中建议自定义路径吧,文件夹名字Redis,一定要大写,小写不来事. 安装完后 启动命令 找到你安装redis的文件夹,在 ...

  5. 用 NetworkX + Gephi + Nebula Graph 分析<权力的游戏>人物关系(下篇)

    在上一篇[1]中,我们通过 NetworkX 和 Gephi 展示了<权力的游戏>中的人物关系.在本篇中,我们将展示如何通过 NetworkX 访问图数据库 Nebula Graph. N ...

  6. 用 NetworkX + Gephi + Nebula Graph 分析<权力的游戏>人物关系(上篇)

    我们都知道<权利的游戏>在全世界都很多忠实的粉丝,除去你永远不知道剧情下一秒谁会挂这种意外"惊喜",当中复杂交错的人物关系也是它火爆的原因之一,而本文介绍如何通过 Ne ...

  7. Mysql常用存储引擎以及区别?

    InnoDB:是Mysql的默认存储引擎,支持事务.外键.如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新.删除操作,那么InnoDB存 ...

  8. linux的内置crontab(定时任务)的简单介绍

    编写定时任务的基本命令: #查看当前用户的crontab crontab -l:   #编辑crontab任务 crontab -e:   #删除crontab任务 crontab -r   定时任务 ...

  9. [青少年CTF训练平台]web部分题解(已完结!)

    文章管理系统 首先打开环境(>ω<。人)ZZz♪♪ 既然要做题,就要做全面了,图上说了,既然有假flag我就先找出来: 假flag: 打开vmware,使用sqlmap进行处理: sqlm ...

  10. Advanced .Net Debugging 3:基本调试任务(对象检查:内存、值类型、引用类型、数组和异常的转储)

    一.介绍 这是我的<Advanced .Net Debugging>这个系列的第四篇文章.今天这篇文章的标题虽然叫做"基本调试任务",但是这章的内容还是挺多的.由于内容 ...