• 队列:C++实现


    引言:

            在C++中实现队列是一种常见的数据结构操作。队列是一种先进先出(FIFO)的数据结构,类似于排队买票或者排队等待服务的场景。在本文中,我们将使用C++语言来实现一个简单的队列数据结构。

    技术实现:

            首先,我们定义了一个常量QueueSize,用于表示队列的最大容量。然后,我们使用模板类Queue来定义队列的操作。模板类允许我们在实例化队列时指定元素的类型。

    在Queue类中,我们定义了以下成员函数:

    • 构造函数Queue()用于初始化队列。
    • 析构函数~Queue()用于释放队列的资源。
    • enQueue(Element x)用于将元素x入队。
    • deQueue()用于将队首元素出队。
    • getQueue()用于获取队首元素。
    • empty()用于判断队列是否为空。

    此外,我们还定义了一个私有成员变量data来存储队列元素,以及front和rear来表示队首和队尾的位置。

    1. #include
    2. #include
    3. const int QueueSize = 10;
    4. template<typename Element>
    5. class Queue
    6. {
    7. public:
    8. Queue();
    9. ~Queue();
    10. void enQueue(Element x);
    11. Element deQueue();
    12. Element getQueue();
    13. bool empty();
    14. private:
    15. Element data[QueueSize];
    16. int front, rear;
    17. };

            接下来,我们将逐步实现这些成员函数。在构造函数中,我们将front和rear初始化为0,表示队列为空。在析构函数中,我们不需要做太多工作,因为C++会自动释放数组的内存。

            在enQueue函数中,我们首先判断队列是否已满,如果满了则抛出异常。然后将元素x放入rear位置,并将rear后移一位。在deQueue函数中,我们首先判断队列是否为空,如果为空则抛出异常。然后将front后移一位,并返回队首元素。在getQueue函数中,我们直接返回队首元素。在empty函数中,我们判断队列是否为空并返回相应的结果。

    1. template<typename Element>
    2. Queue::Queue()
    3. {
    4. front = rear = -1;
    5. }
    6. template<typename Element>
    7. Queue::~Queue(){}
    8. template<typename Element>
    9. void Queue::enQueue(Element x)
    10. {
    11. assert((rear + 1) % QueueSize != front);
    12. rear = (rear + 1) % QueueSize;
    13. data[rear] = x;
    14. }
    15. template<typename Element>
    16. Element Queue::deQueue()
    17. {
    18. assert(rear != front);
    19. front = (front + 1) % QueueSize;
    20. return data[front];
    21. }
    22. template<typename Element>
    23. Element Queue::getQueue()
    24. {
    25. assert(rear != front);
    26. return data[front];
    27. }
    28. template<typename Element>
    29. bool Queue::empty()
    30. {
    31. return rear==front;
    32. }

    最后,我们可以使用这个Queue类来进行队列操作。例如:

    1. Queue<int> q;
    2. q.enQueue(1);
    3. q.enQueue(2);
    4. std::cout << q.getQueue() << std::endl; // 输出1
    5. q.deQueue();
    6. std::cout << q.getQueue() << std::endl; // 输出2

    结尾: 

             通过这样的实现,我们可以方便地使用C++来操作队列,实现先进先出的数据结构。这种实现方式可以应用于各种场景,如操作系统调度、网络数据传输等。希望本文对你理解队列的实现有所帮助。

  • 相关阅读:
    Mac用NTFS文件夹读写NTFS硬盘 NTFS能复制多大的文件
    springcloudalibaba架构(21):MQ的简介
    ANR问题分析的一般套路
    基于ssm高校档案管理系统源码
    10个最受欢迎的HDR环境贴图下载站
    一些 Next Generation ABAP Platform 的新语法用例
    【LeetCode】【剑指offer】【数值的整数次方】
    【Python】使用集合实现筛选法求素数实验
    wps/word中字体安装教程
    Day20_脚手架,分析脚手架结构,render()函数
  • 原文地址:https://blog.csdn.net/Hamdh/article/details/134558305