117.info
人生若只如初见

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

#include 

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

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe8b8AzsIAw9QAFw.html

推荐文章

  • C++ next_permutation与prev_permutation

    next_permutation和prev_permutation是C++标准库中的两个函数,用于在给定的序列中生成下一个排列和上一个排列。
    next_permutation函数可以生成给定序列的下...

  • C++ next_permutation的效率如何

    C++的next_permutation函数是标准库中用来生成给定序列的下一个排列的函数,其效率取决于输入序列的大小和特性。在最坏情况下,生成下一个排列需要O(n)的时间复杂...

  • C++ next_permutation函数怎么用

    在C++中,可以使用next_permutation函数来生成下一个排列。该函数位于头文件中,并接受两个迭代器作为参数:起始迭代器和结束迭代器。
    下面是一个简单的示例...

  • C++ next_permutation的时间复杂度

    C++中的next_permutation函数的时间复杂度为O(n),其中n为序列的长度。这是因为next_permutation函数的实现使用了一种高效的算法来生成下一个排列,时间复杂度主...

  • C++循环队列的动态扩容机制

    循环队列是一种基于数组实现的队列,当队列满时,需要进行扩容操作。动态扩容的机制是在队列满时,创建一个新的数组,将原数组中的元素复制到新数组中,并将队列...

  • C++循环队列的错误处理

    在使用循环队列时,可能会遇到一些常见的错误,需要进行适当的错误处理和解决方法。以下是一些常见的错误和对应的处理方法: 队列为空:在队列为空时,如果进行出...

  • C++循环队列在并发环境的表现

    在并发环境下,使用C++循环队列可能会引发一些问题,主要是由于多个线程同时对队列进行读写操作可能会导致数据不一致性或者竞争条件的问题。 竞争条件:如果多个...

  • C++循环队列的内存管理策略

    在C++中,循环队列的内存管理策略通常涉及以下几个方面: 内存分配:循环队列通常使用数组来实现,因此在创建循环队列时需要分配一定大小的数组空间。可以使用动...