队列是只能向一端添加元素,从另一端删除元素的线性群体

循环队列

  • 在想象中将数组弯曲成环形,元素出队时,后继元素不移动,每当队尾达到数组最后一个元素时,便再回到数组开头。

队列类模板

//Queue.h
#ifndef QUEUE_H
#define QUEUE_H
#include <cassert> //类模板的定义
template <class T, int SIZE = > class Queue
{
private:
int front, rear, count;
T list[SIZE];
public:
Queue();
void insert(const T &item);
T remove();
void clear();
const T &getFront() const; int getLength() const;
bool isEmpty() const;
bool isFull() const;
}; template <class T, int SIZE> Queue<T, SIZE>::Queue():front(),rear(),count(){} template <class T, int SIZE> void Queue<T, SIZE>::insert(const T& item)
{
assert(count != SIZE);
count++;
list[rear] = item;
rear = (rear + ) % SIZE;
} template <class T, int SIZE> T Queue<T, SIZE>::remove()
{
assert(count != );
int temp = front;
count--;
front = (front + ) % SIZE;
return list[temp];
} template <class T, int SIZE> const T &Queue<T, SIZE>::getFront() const
{
return list[front];
} template <class T, int SIZE> int Queue<T, SIZE>::getLength() const
{
return count;
} template <class T, int SIZE> bool Queue<T, SIZE>::isEmpty() const
{
return count == ;
} template <class T, int SIZE> bool Queue<T, SIZE>::isFull() const
{
return count == SIZE;
} template <class T, int SIZE> bool Queue<T, SIZE>::clear()
{
count = ;
front = ;
rear = ;
} #endif //

C++学习笔记50:队列类模板的更多相关文章

  1. (转)Qt Model/View 学习笔记 (七)——Delegate类

    Qt Model/View 学习笔记 (七) Delegate  类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...

  2. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  3. Django 学习笔记(五)模板标签

    关于Django模板标签官方网址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.IF标签 Hello World/vi ...

  4. Django 学习笔记(四)模板变量

    关于Django模板变量官方网址:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.传入普通变量 在hello/Hell ...

  5. Django 学习笔记(三)模板导入

    本章内容是将一个html网页放进模板中,并运行服务器将其展现出来. 平台:windows平台下Liunx子系统 目前的目录: hello ├── manage.py ├── hello │ ├── _ ...

  6. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. C++学习笔记:09 函数模板与类模板

    课程<C++语言程序设计进阶>清华大学 郑莉老师) 引入 考虑一个求绝对值函数myabs,对于int,double,float等数据类型需要重载多次,编写多个函数体.函数体逻辑代码完全一致 ...

  8. Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

    Caliburn.Micro学习笔记目录 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详 ...

  9. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...

随机推荐

  1. Leetcode刷题第004天

    class Solution { public: int findKthLargest(vector<int>& nums, int k) { , nums.size()-, k) ...

  2. python下载想听的有声书,让喜马拉雅收费,我是程序员!

    from urllib import parse,request import urllib header_dict = {'User-Agent': 'Mozilla/5.0 (Windows NT ...

  3. yarn的安装与使用及与npm对应的命令

    在Nodejs环境下,通过npm install -g yarn 命令进行全局安装 例如:yarn versionyarn inityarn installyarn add vueyarn add v ...

  4. Git 将本地库添加到远程仓库

    git remote add origin ssh://admin@127.0.0.1:29418/Prjs/prj1.git git push -u origin master

  5. GIT 数据结构

    Git doesn’t think of or store its data this way. Instead, Git thinks of its data more like a series ...

  6. [转] react-router4 + webpack Code Splitting

    项目升级为react-router4后,就尝试着根据官方文档进行代码分割.https://reacttraining.com/react-router/web/guides/code-splittin ...

  7. nginx 日志 cron任务切割日志

    #vim cut_nginx_log.sh #cd /usr/local/nginx/logs/ #/bin/mv access.log access_$(date +%F).log #/usr/lo ...

  8. php7安装参数编译

    系统:Centos6.8 软件包:php-7.0.14.tar.gz yum install bzip2 bzip2-devel -y yum install curl curl-devel -y y ...

  9. squid,nginx,lighttpd反向代理的区别

    反向代理从传输上分可以分为2种: 1:同步模式(apache-mod_proxy和squid) 2:异步模式(lighttpd 和 nginx) 在nginx的文档说明中,提到了异步传输模式并提到它可 ...

  10. Json传递数据两种方式(json大全)

    1.Json传递数据两种方式(json大全)----------------------------字符串 var list1 = ["number","name&quo ...