广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ Queue队列类模版实例详解
  • 770
分享到

C++ Queue队列类模版实例详解

2024-04-02 19:04:59 770人浏览 八月长安
摘要

目录1.队列的介绍2.代码实现3.测试运行总结1.队列的介绍 队列的定义 队列(Queue)是一种线性存储结构。它有以下几个特点:按照"先进先出(FIFO, First-I

1.队列的介绍

队列的定义

  • 队列(Queue)是一种线性存储结构。它有以下几个特点:
  • 按照"先进先出(FIFO, First-In-First-Out)"方式进出队列。
  • 队列只允许在"队首"进行取出操作(出队列),在"队尾"进行插入操作(入队列 )

队列实现的方式有两种

队列需要实现的函数

  • T dequeue() : 出队列,并返回取出的元素
  • void enqueue(const T &t) : 入队列
  • T &head() : 获取队首数据,但是不会被取出
  • const T &head() const : 获取const类型队首数据
  • int length() const: 获取数量(父类已经实现)
  • void clear(): 清空队列(父类已经实现)

2.代码实现

本章,我们实现的队列基于链表形式实现,它的父类是我们之前实现的LinkedList类:

c++ 双向循环链表类模版实例详解

所以Queue.h代码如下:

#ifndef QUEUE_H
#define QUEUE_H
#include "throw.h"
// throw.h里面定义了一个ThrowException抛异常的宏,如下所示:
//#include <iOStream>
//using namespace std;
//#define ThrowException(errMsg)  {cout<<__FILE__<<" LINE"<<__LINE__<<": "<<errMsg<<endl; (throw errMsg);}
#include "LinkedList.h"
template < typename T>
class Queue : public LinkedList<T>
{
public:
    inline void enqueue(const T &t) { LinkedList<T>::append(t); }
    inline T dequeue()
    {
        if(LinkedList<T>::isEmpty()) {        // 如果栈为空,则抛异常
            ThrowException("Stack is empty ...");
        }
        T t = LinkedList<T>::get(0);
        LinkedList<T>::remove(0);
        return t;
    }
    inline T &head()
    {
        if(LinkedList<T>::isEmpty()) {        // 如果栈为空,则抛异常
            ThrowException("Stack is empty ...");
        }
        return LinkedList<T>::get(0);
    }
    inline const T &head() const
    {
        if(LinkedList<T>::isEmpty()) {        // 如果栈为空,则抛异常
            ThrowException("Stack is empty ...");
        }
        return LinkedList<T>::get(0);
    }
};
#endif // QUEUE_H

3.测试运行

int main(int arGC, char *argv[])
{
    Queue<int> queue;
    cout<<"******* current length:"<<queue.length()<<endl;
    for(int i = 0; i < 5; i++) {
        cout<<"queue.enqueue:"<<i<<endl;
        queue.enqueue(i);
    }
    cout<<"******* current length:"<<queue.length()<<endl;
    while(!queue.isEmpty()) {
        cout<<"queue.dequeue:"<<queue.dequeue()<<endl;
    }
    return 0;
}

运行打印:

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!   

--结束END--

本文标题: C++ Queue队列类模版实例详解

本文链接: https://www.lsjlt.com/news/140569.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ Queue队列类模版实例详解
    目录1.队列的介绍2.代码实现3.测试运行总结1.队列的介绍 队列的定义 队列(Queue)是一种线性存储结构。它有以下几个特点:按照"先进先出(FIFO, First-I...
    99+
    2022-11-13
  • C++中Queue队列类模版的示例分析
    这篇文章主要介绍C++中Queue队列类模版的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.队列的介绍队列的定义队列(Queue)是一种线性存储结构。它有以下几个特点:按照"先进先出(FIFO,...
    99+
    2023-06-29
  • C++中队列queue的用法实例详解
    目录一、定义一、queue初始化二、queue常用函数补充:queue 的基本操作举例如下总结一、定义 queue是一种容器转换器模板,调用#include< queue>...
    99+
    2022-11-13
  • Java  队列 Queue 用法实例详解
    队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。以下实例演示了队列(Queue)的用法:import jav...
    99+
    2023-05-31
    java 队列 queue
  • C++Stack栈类模版实例详解
    目录1.栈的介绍2.栈实现3.代码测试总结1.栈的介绍 栈的实现方式分为3种 基于静态数组实现,内部预设一个很大的数组对象, 实现简单,缺点是空间受限。基于动态数组实现,内部预设一个...
    99+
    2022-11-13
  • java实现队列queue数据结构详解
    目录概念队列中两个主要操作队列遵循以下条件:队列的数组实现总结概念 队列是一种非原始(特殊)的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操...
    99+
    2022-11-13
  • C++动态数组模版类Vector实例详解
    目录1.实现机制2.代码实现3.测试运行总结1.实现机制 内部主要通过m_capacity数组容量成员和m_length数组有效长度成员来维护一个T* data数组空间. 内部默认分...
    99+
    2022-11-13
  • C++实现优先队列的示例详解
    目录前言堆的存储方式维护堆的方法1、上浮操作2、下沉操作附上代码前言 首先,啊,先简单介绍一下优先队列的概念,学数据结构以及出入算法竞赛的相信都对队列这一数据结构十分熟悉,这是一个线...
    99+
    2022-11-13
  • C语言实现队列的示例详解
    目录前言一. 什么是队列二. 使用什么来实现栈三. 队列的实现3.1头文件3.2 函数的实现四.完整代码前言 前一段时间,我们试着用C语言实现了数据结构中的顺序表,单链表,双向循环链...
    99+
    2022-11-13
  • Android 消息队列模型详解及实例
    Android 消息队列模型详解及实例Android系统的消息队列和消息循环都是针对具体线程的,一个线程可以存在(当然也可以不存在)一个消息队列(Message Queue)和一个消息循环(Looper)。Android中除了UI线程(主线...
    99+
    2023-05-31
    android 消息队列 roi
  • c语言数据结构之栈和队列详解(Stack&Queue)
    目录简介栈一、栈的基本概念1、栈的定义2、栈的常见基本操作二、栈的顺序存储结构1、栈的顺序存储2、顺序栈的基本算法3、共享栈(两栈共享空间)三、栈的链式存储结构1、链栈2、链栈的基本...
    99+
    2022-11-13
  • C#使用泛型队列Queue实现生产消费模式
    如果把生产消费想像成自动流水生产线的话,生产就是流水线的物料,消费就是某种设备对物料进行加工的行为,流水线就是队列。 现在,要写一个体现生产消费模式的泛型帮助类,比如叫Produce...
    99+
    2022-11-13
    C# 泛型队列 Queue 实现生产消费模式
  • C++ 双向循环链表类模版实例详解
    目录1.插入某个节点流程2.构造函数修改3.重新实现append和prepend函数4.修改迭代器类5.LinkedList.h代码如下6.测试运行总结在上章C++图解单向链表类模板...
    99+
    2022-11-13
  • C++优先队列用法案例详解
    c++优先队列(priority_queue)用法详解 普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。 在优先队列中,元素被赋予优先级。当访问元素时,具有最高...
    99+
    2022-11-12
  • C++ stack与queue模拟实现详解
    目录stack与queue模拟实现 stackqueue为什么选择deque作为stack和queue的底层默认容器总结stack与queue模拟实现 在stl中,stack(...
    99+
    2022-11-12
  • C++代码实现链队列详解
    目录主要功能:完整代码展示:总结主要功能: 初始化、入队、出队、取队头元素、销毁队列、输出队列 完整代码展示: #include <iostream> using n...
    99+
    2022-11-12
  • C语言用栈模拟实现队列问题详解
    目录题目描述题目链接思路分析代码实现题目描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)。 你只能使用标准的栈操作...
    99+
    2022-11-13
  • C语言超详细讲解栈与队列实现实例
    目录1.思考-12.栈基本操作的实现2.1 初始化栈2.2 入栈2.3 出栈2.4 获取栈顶数据2.5 获取栈中有效元素个数2.6 判断栈是否为空2.7 销毁栈3.测试3.1 测试3...
    99+
    2022-11-13
  • python 队列详解及实例代码
    队列特性:先进先出(FIFO)——先进队列的元素先出队列。来源于我们生活中的队列(先排队的先办完事)。 Queue模块最常与threading模块一起构成生产-消费者模型,提供了一个适用于多线程编程的先进...
    99+
    2022-06-04
    队列 详解 实例
  • C++示例详解Prim算法与优先队列
    目录Prim算法prim代码实现优先队列优先队列代码实现自定义类型优先序列贪心算法的本质是:一个问题的局部最优解,也是该问题的全局最优解。 最小生成树的最优子结构性质:假设一个无向图...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作