千家信息网

C++中Queue队列类模版的示例分析

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要介绍C++中Queue队列类模版的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.队列的介绍队列的定义队列(Queue)是一种线性存储结构。它有以下几个特
千家信息网最后更新 2025年01月22日C++中Queue队列类模版的示例分析

这篇文章主要介绍C++中Queue队列类模版的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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 //using namespace std;//#define ThrowException(errMsg)  {cout<<__FILE__<<" LINE"<<__LINE__<<": "<class Queue : public LinkedList{public:    inline void enqueue(const T &t) { LinkedList::append(t); }    inline T dequeue()    {        if(LinkedList::isEmpty()) {        // 如果栈为空,则抛异常            ThrowException("Stack is empty ...");        }        T t = LinkedList::get(0);        LinkedList::remove(0);        return t;    }    inline T &head()    {        if(LinkedList::isEmpty()) {        // 如果栈为空,则抛异常            ThrowException("Stack is empty ...");        }        return LinkedList::get(0);    }    inline const T &head() const    {        if(LinkedList::isEmpty()) {        // 如果栈为空,则抛异常            ThrowException("Stack is empty ...");        }        return LinkedList::get(0);    }};#endif // QUEUE_H

3.测试运行

int main(int argc, char *argv[]){    Queue queue;    cout<<"******* current length:"<

运行打印:

以上是"C++中Queue队列类模版的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0