C++循环队列的模板实现

   2024-10-06 6210
核心提示:#include iostreamtemplate class Tclass CircularQueue {private:int front, rear, maxSize;T* queueArray;public:CircularQueu

#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判满等。通过模板类的方式实现,可以支持不同类型的元素入队和出队操作。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号