以下是循环队列的 C++ 源代码:

#include <iostream>
using namespace std;

class CircularQueue {
private:
    int* queue;  // 队列数组指针
    int front;   // 队头指针
    int rear;    // 队尾指针
    int maxSize; // 队列最大长度

public:
    // 构造函数
    CircularQueue(int size) {
        maxSize = size + 1;
        queue = new int[maxSize];
        front = 0;
        rear = 0;
    }

    // 判断队列是否为空
    bool isEmpty() {
        return front == rear;
    }

    // 判断队列是否已满
    bool isFull() {
        return (rear + 1) % maxSize == front;
    }

    // 入队
    bool enqueue(int data) {
        if (isFull()) {
            return false;
        }
        queue[rear] = data;
        rear = (rear + 1) % maxSize;
        return true;
    }

    // 出队
    bool dequeue(int& data) {
        if (isEmpty()) {
            return false;
        }
        data = queue[front];
        front = (front + 1) % maxSize;
        return true;
    }

    // 返回队头元素
    bool getFront(int& data) {
        if (isEmpty()) {
            return false;
        }
        data = queue[front];
        return true;
    }

    // 返回队列长度
    int getSize() {
        return (rear - front + maxSize) % maxSize;
    }

    // 打印队列元素
    void print() {
        int size = getSize();
        int i = front;
        while (size--) {
            cout << queue[i] << " ";
            i = (i + 1) % maxSize;
        }
        cout << endl;
    }

    // 析构函数
    ~CircularQueue() {
        delete[] queue;
    }
};

int main() {
    CircularQueue q(5); // 创建一个最大长度为 5 的循环队列

    // 入队
    q.enqueue(1);
    q.enqueue(2);
    q.enqueue(3);
    q.enqueue(4);
    q.enqueue(5);

    // 打印队列元素
    q.print(); // 输出:1 2 3 4 5

    // 入队失败,队列已满
    q.enqueue(6); // 返回 false

    // 出队
    int data;
    q.dequeue(data); // data = 1

    // 打印队列元素
    q.print(); // 输出:2 3 4 5

    // 获取队头元素
    q.getFront(data); // data = 2

    // 打印队列元素
    q.print(); // 输出:2 3 4 5

    return 0;
}
``
循环队列的源代码

原文地址: https://www.cveoy.top/t/topic/gA2y 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录