数据结构与算法之-----队列(Queue)
【
写在前面的话:本专栏的主要内容:数据结构与算法。
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)相关推荐
- java数据结构与算法之(Queue)队列设计与实现
[版权申明]转载请注明出处(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53375004 出自[zejian的博客] ...
- python数据结构与算法练习-Printer Queue
python数据结构与算法练习-队列 Printer Queue python实现 需要注意的知识点: Printer Queue 链接: link. The only printer in the ...
- 数据结构与算法_03队列
数据结构与算法_03队列 队列 0.章节重点整理 1.认识队列 1.1. 队列的工作运算 1.2.队列的数组实现 1.3.队列的链表实现 2.队列的应用 2.1.环形队列 2.2.双向队列 队列 0. ...
- java数据结构 队列_Java数据结构与算法[原创]——队列
声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本文介绍数据结构中的队列(queue)的概念.存储结构.队列的特点,文末给出ja ...
- 数据结构与算法:队列——02
文章目录 三.队列 1.队列概述: 2.单向队列[数组表现形式]: 3.环形队列[数组表现形式]: 三.队列 1.队列概述: 定义: 队列定义 队列简称队,它也是一种操作受限的线性表.其限制为仅允许在 ...
- 看动画学算法之:队列queue
文章目录 简介 队列的实现 队列的数组实现 队列的动态数组实现 队列的链表实现 队列的时间复杂度 简介 队列Queue是一个非常常见的数据结构,所谓队列就是先进先出的序列结构. 想象一下我们日常的排队 ...
- python实现队列_用Python实现的数据结构与算法:队列
一.概述 队列(Queue)是一种先进先出(FIFO)的线性数据结构,插入操作在队尾(rear)进行,删除操作在队首(front)进行. 二.ADT 队列ADT(抽象数据类型)一般提供以下接口: Qu ...
- abcde依次进入一个队列_数据结构与算法(6):队列
(文中图片出自王争老师的课程:数据结构与算法之美,侵删) 先进者先出,这就是典型的队列. 根据上篇文章,我们知道栈只支持两个基本操作:入栈 push()和出栈 pop().队列跟栈非常相似,支持的操作 ...
- Java数据结构与算法:队列
1. 队列的介绍 队列 (Queue)是另一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出(Fist In Fist Out, 缩写为FIFO)的特性.在队列中 ...
最新文章
- CMake实战之安装测试和添加环境生成安装包
- Python OpenCV 图片拆分与拼接
- zcmu1756(模拟)
- awk -f 分隔符 命令_详解!!!awk参见使用命令
- 《深入理解Android 卷III》第四章 深入理解WindowManagerService
- Python模块: 命令行解析optionparser
- bash shell数组模拟队列queue和shell数组使用技巧
- 【MATLAB统计分析与应用100例】案例008:调用rand函数生成均匀分布随机数
- 三万字速通SSM框架入门知识点,快速上手CRUD
- python 默认配置文件_python各类配置文件写法
- java 基本数据类型的自动拆箱与装箱
- 《参考消息》出现大标题错别字硬伤
- 这两天在学习微信小程序,不可避免的又要用到一些图标,通过问朋友解决了这个事情 想分享给你们一下 希望对你们有用...
- 12. Laravel 4 迁移数据填充
- 电脑如何通过USB连接PPC手机上网
- Intellij IDEA 设置字体加粗
- UMTS移动通信技术
- 建站百科|全网最全、最系统的域名申请教程,不看吃亏!!!
- JAVA idea建包的时候com.不分开
- php怎么将中文翻译成英文,PHP将中文翻译成拼音
热门文章
- python安装完毕后,提示找不到ssl模块的解决步骤
- Amoeba-mysql开源项目高可用读写分离
- 解析Excel2007之关键点_Sheet.xml(一)
- Linux 命令(56)—— telnet 命令
- python学习之字符串函数用法
- oracle 12.2.0.1 使用 active dataguard broker 之二 switchover
- maven javaProject打包发布成服务
- 代码描述10911 - Forming Quiz Teams
- Java安全的发布对象
- 概率与信息论---贝叶斯规则