• 队列是一种 先进先出(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. 推荐两个网络复用相关的 Go pkg: cmux smux

    推荐两个网络复用相关的 Go pkg: cmux/smux 只写一下如何使用,不对实现进行大量描述,两个库的代码都比较精炼,花一会看一下就行. cmux 对端口进行复用,单端口可以建立不同协议的连接( ...

  2. centos7 搭建snmpv3靶场

    安装文件 yum install net-snmp net-snmp-utils -y 关闭服务创建用户 systemctl stop snmpd # 添加一个用户 如 root net-snmp-c ...

  3. win32 - 使用GDI+播放gif图片

    今天做case的时候遇到一个这样的问题,故记录下来. Codeproject有类似的案例,不过是使用的MFC模板编译的. 因为我们只需要win32程序,所以就....代码如下: CodeProject ...

  4. 产品分享:Qt数学函数公式学科工具,当前版本v1.0.0

    ​若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121194536红胖子(红模仿)的博文大全:开发技术集合 ...

  5. 推导式,集合推导式,生成器表达式及生成器函数day13

    1.推导式 用一行循环判断遍历处一系列数据的方式 推导式在使用时,只能用for循环和判断,而且判断只能是单项判断 基本语法: lst = [i for i in range(1,51)] print( ...

  6. 【Azure 环境】微软云上主机,服务的安全更新疑问

    [问题一]微软云上的虚拟机,不论是Windows系统or Linux 系统,系统的安全补丁是由微软云平台   打上补丁进行修复,还是使用虚拟机的用户手动更新修复呢? [答]这些补丁不会由平台来直接操作 ...

  7. 【转载】Java并发之AQS详解

    一.概述 谈到并发,不得不谈ReentrantLock:而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQ ...

  8. 二十: MySql 事务日志

    MySql 事务日志 事务有4种特性:原子性.一致性.隔离性和持久性.那么事务的四种特性到底是基于什么机制实现呢? 事务的隔离性由 锁机制 实现. 而事务的原子性.一致性和持久性由事务的 redo 日 ...

  9. [学习笔记]在CentOS7中用Docker方式安装Jenkins

    @ 目录 原理: 创建Docker网桥网络 安装DinD 创建镜像 构建镜像 运行容器 原理: Docker in Docker (以下简称 DinD)可以在 Container 中直接运行一个 Do ...

  10. vue-cli-plugin-electron-builder

    https://nklayman.github.io/vue-cli-plugin-electron-builder/guide/#installation 用cnpm安装 cnpm install ...