C++循环队列基本操作实现
时间: 2024-09-24 09:17:45 浏览: 37
C++实现循环队列
在C++中,循环队列是一种特殊的线性表,它在一端插入元素,在另一端删除元素,当一端满了就从另一端开始继续存储,从而避免了普通数组需要频繁地移动元素的问题。以下是循环队列的基本操作实现:
```cpp
template <typename T>
class CircularQueue {
private:
int front, rear; // 前面指针和后面指针
T* queue; // 存储数据的数组
const int maxCapacity; // 队列最大容量
public:
CircularQueue(int capacity) : front(0), rear(0), queue(new T[capacity]), maxCapacity(capacity) {}
// 判断队列是否为空
bool isEmpty() { return front == rear; }
// 判断队列是否已满
bool isFull() { return (rear + 1) % maxCapacity == front; }
// 入队操作
void enqueue(T value) {
if (isFull()) {
cout << "Queue is full.\n";
return;
}
rear = (rear + 1) % maxCapacity;
queue[rear] = value;
}
// 出队操作
T dequeue() {
if (isEmpty()) {
cout << "Queue is empty.\n";
return T(); // 返回默认值或抛异常
}
T removedValue = queue[front];
front = (front + 1) % maxCapacity;
return removedValue;
}
// 查看队首元素但不移除
T front() { return queue[front]; }
// 删除队头元素并返回
T dequeueFront() {
if (isEmpty()) {
cout << "Queue is empty.\n";
return T();
}
T removedValue = queue[front];
front = rear = (front + 1) % maxCapacity;
return removedValue;
}
~CircularQueue() { delete[] queue; } // 析构函数释放内存
};
```
阅读全文