中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C++循環隊列的模板實現

c++
小樊
82
2024-07-14 10:21:28
欄目: 編程語言

#include <iostream>

template <class T>
class CircularQueue {
private:
    int front, rear, maxSize;
    T* queueArray;
public:
    CircularQueue(int size) {
        maxSize = size + 1; // one extra space for checking full condition
        front = rear = 0;
        queueArray = new T[maxSize];
    }

    ~CircularQueue() {
        delete[] queueArray;
    }

    bool isEmpty() {
        return front == rear;
    }

    bool isFull() {
        return (rear + 1) % maxSize == front;
    }

    void enqueue(T item) {
        if (isFull()) {
            std::cout << "Queue is full, cannot enqueue.\n";
        } else {
            rear = (rear + 1) % maxSize;
            queueArray[rear] = item;
        }
    }

    T dequeue() {
        if (isEmpty()) {
            std::cout << "Queue is empty, cannot dequeue.\n";
            return T();
        } else {
            front = (front + 1) % maxSize;
            return queueArray[front];
        }
    }
};

int main() {
    CircularQueue<int> queue(5);

    queue.enqueue(1);
    queue.enqueue(2);
    queue.enqueue(3);

    std::cout << "Dequeued item: " << queue.dequeue() << std::endl;
    std::cout << "Dequeued item: " << queue.dequeue() << std::endl;

    queue.enqueue(4);
    queue.enqueue(5);
    queue.enqueue(6);

    std::cout << "Dequeued item: " << queue.dequeue() << std::endl;
    std::cout << "Dequeued item: " << queue.dequeue() << std::endl;
    std::cout << "Dequeued item: " << queue.dequeue() << std::endl;

    return 0;
}

這段代碼實現了一個循環隊列的模板類CircularQueue,其中包括了隊列的基本操作:enqueue入隊、dequeue出隊、isEmpty判空、isFull判滿等。通過模板類的方式實現,可以支持不同類型的元素入隊和出隊操作。

0
津市市| 象山县| 新宁县| 炉霍县| 剑川县| 永州市| 张北县| 西吉县| 许昌市| 滨州市| 汪清县| 宁蒗| 延津县| 西吉县| 胶南市| 塔城市| 澄江县| 大厂| 深泽县| 吴江市| 诸城市| 嘉义市| 定兴县| 桐庐县| 石门县| 乳山市| 新化县| 新乡县| 岳西县| 林口县| 哈密市| 五莲县| 义乌市| 扎兰屯市| 抚远县| 青海省| 重庆市| 磐安县| 张家口市| 古丈县| 葵青区|