写在前面的话:本专栏的主要内容:数据结构与算法。

1.对于初识数据结构的小伙伴们,鉴于后面的数据结构的构建会使用到专栏前面的内容,包括具体数据结构的应用,所使用到的数据结构,也是自己构建的,未使用系统的库文件,因此,建议这类小伙伴们从本专栏的总揽​​​​​​​按顺序进行学习;

​​​​​​​2.对于想查询有关资料的小伙伴们,可以选择性地浏览。希望小伙伴们都能有所收获~

​  ​​​​​​】

上几章,我们介绍了栈的几个应用​​​​​​​。本章来学习另外一种数据结构-----队列。队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(队首)进行删除操作,在表的后端(队尾)进行插入操作。

和栈一样,队列也是一种操作受限的线性表。特点:先进先出(FIFO)。

下面我们来看队列的构建,继承自List.h,List.h参考笔者另一篇博文,读者可以思考这样一个问题:为什么栈的父类使用的是Vector.h,而队列的父类使用的是List.h ?

Queue.h:

/*** 作者:易果啥笔* 时间:2021.8.20* 内容:队列模版类***/#ifndef STACK_QUEUE_H
#define STACK_QUEUE_H
#include "List.h"
#include "ListNode.h"template <typename T> class Queue : public List<T> {public:void enqueue(T const& e){this->insertAsLast(e);}T dequeue(){return this->remove(this->first());}T& front(){return this->first()->data;}
};#endif //STACK_QUEUE_H

队列的main.cpp文件:

/*** 作者:易果啥笔* 时间:2021.8.20* 内容:队列模版类***/#include <iostream>
#include "Queue.h"//遍历函数print
template <typename T> void print(T& e){ std::cout<<e; };int main(){Queue<int> queue;//入队queue.enqueue(1);queue.enqueue(2);queue.enqueue(3);queue.enqueue(4);queue.enqueue(5);//遍历queue.traverse(print);std::cout<<std::endl;//出队queue.dequeue();//遍历queue.traverse(print);std::cout<<std::endl;//打印队首元素std::cout<<queue.front()<<std::endl;return 0;}

简单来说,由于队列主要对表的首尾元素进行操作,如果继承List.h,只需常数级时间复杂度即可实现,相比较继承Vector.h而言,复杂度更低,效率更高。而对于栈,继承List.h还是Vector.h,复杂度基本相同,读者可以尝试用List.h作为栈的父类来构建一个栈。

此外,队列也有很多方面的应用,比如队列快速排序,消息队列等,这些应用涉及的知识比较广,在此就不展开解释了,有兴趣的小伙伴们可以查阅有关资料。

下一章:数据结构与算法之-----二叉树(一)​​​​​​​

数据结构与算法之-----队列(Queue)相关推荐

  1. java数据结构与算法之(Queue)队列设计与实现

    [版权申明]转载请注明出处(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53375004 出自[zejian的博客] ...

  2. python数据结构与算法练习-Printer Queue

    python数据结构与算法练习-队列 Printer Queue python实现 需要注意的知识点: Printer Queue 链接: link. The only printer in the ...

  3. 数据结构与算法_03队列

    数据结构与算法_03队列 队列 0.章节重点整理 1.认识队列 1.1. 队列的工作运算 1.2.队列的数组实现 1.3.队列的链表实现 2.队列的应用 2.1.环形队列 2.2.双向队列 队列 0. ...

  4. java数据结构 队列_Java数据结构与算法[原创]——队列

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本文介绍数据结构中的队列(queue)的概念.存储结构.队列的特点,文末给出ja ...

  5. 数据结构与算法:队列——02

    文章目录 三.队列 1.队列概述: 2.单向队列[数组表现形式]: 3.环形队列[数组表现形式]: 三.队列 1.队列概述: 定义: 队列定义 队列简称队,它也是一种操作受限的线性表.其限制为仅允许在 ...

  6. 看动画学算法之:队列queue

    文章目录 简介 队列的实现 队列的数组实现 队列的动态数组实现 队列的链表实现 队列的时间复杂度 简介 队列Queue是一个非常常见的数据结构,所谓队列就是先进先出的序列结构. 想象一下我们日常的排队 ...

  7. python实现队列_用Python实现的数据结构与算法:队列

    一.概述 队列(Queue)是一种先进先出(FIFO)的线性数据结构,插入操作在队尾(rear)进行,删除操作在队首(front)进行. 二.ADT 队列ADT(抽象数据类型)一般提供以下接口: Qu ...

  8. abcde依次进入一个队列_数据结构与算法(6):队列

    (文中图片出自王争老师的课程:数据结构与算法之美,侵删) 先进者先出,这就是典型的队列. 根据上篇文章,我们知道栈只支持两个基本操作:入栈 push()和出栈 pop().队列跟栈非常相似,支持的操作 ...

  9. Java数据结构与算法:队列

    1. 队列的介绍 队列 (Queue)是另一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出(Fist In Fist Out, 缩写为FIFO)的特性.在队列中 ...

最新文章

  1. CMake实战之安装测试和添加环境生成安装包
  2. Python OpenCV 图片拆分与拼接
  3. zcmu1756(模拟)
  4. awk -f 分隔符 命令_详解!!!awk参见使用命令
  5. 《深入理解Android 卷III》第四章 深入理解WindowManagerService
  6. Python模块: 命令行解析optionparser
  7. bash shell数组模拟队列queue和shell数组使用技巧
  8. 【MATLAB统计分析与应用100例】案例008:调用rand函数生成均匀分布随机数
  9. 三万字速通SSM框架入门知识点,快速上手CRUD
  10. python 默认配置文件_python各类配置文件写法
  11. java 基本数据类型的自动拆箱与装箱
  12. 《参考消息》出现大标题错别字硬伤
  13. 这两天在学习微信小程序,不可避免的又要用到一些图标,通过问朋友解决了这个事情 想分享给你们一下 希望对你们有用...
  14. 12. Laravel 4 迁移数据填充
  15. 电脑如何通过USB连接PPC手机上网
  16. Intellij IDEA 设置字体加粗
  17. UMTS移动通信技术
  18. 建站百科|全网最全、最系统的域名申请教程,不看吃亏!!!
  19. JAVA idea建包的时候com.不分开
  20. php怎么将中文翻译成英文,PHP将中文翻译成拼音

热门文章

  1. python安装完毕后,提示找不到ssl模块的解决步骤
  2. Amoeba-mysql开源项目高可用读写分离
  3. 解析Excel2007之关键点_Sheet.xml(一)
  4. Linux 命令(56)—— telnet 命令
  5. python学习之字符串函数用法
  6. oracle 12.2.0.1 使用 active dataguard broker 之二 switchover
  7. maven javaProject打包发布成服务
  8. 代码描述10911 - Forming Quiz Teams
  9. Java安全的发布对象
  10. 概率与信息论---贝叶斯规则