能否提供一个C++实现的循环队列数据结构的示例代码?
时间: 2024-12-15 21:18:31 浏览: 2
当然可以。下面是一个简单的C++循环队列的实现示例:
```cpp
#include <iostream>
using namespace std;
template <typename T>
class CircularQueue {
private:
int front; // 队头指针
int rear; // 队尾指针
int size; // 队列容量
T* queue; // 存储元素的数组
public:
// 构造函数
CircularQueue(int capacity) {
size = capacity;
front = -1;
rear = -1;
queue = new T[size];
}
// 插入操作
bool enQueue(T data) {
if ((rear + 1) % size == front) { // 判断队满
cout << "Queue is full" << endl;
return false;
}
rear = (rear + 1) % size; // 循环处理
queue[rear] = data;
if (front == -1)
front = rear;
return true;
}
// 删除操作
T deQueue() {
if (front == -1) { // 判断队空
cout << "Queue is empty" << endl;
return T();
}
T data = queue[front]; // 保存要删除的数据
front = (front + 1) % size; // 更新队头
return data;
}
// 查看队首元素
T Front() {
if (front == -1)
return T();
else
return queue[front];
}
// 检查队列是否为空
bool isEmpty() {
return front == -1;
}
// 检查队列是否已满
bool isFull() {
return (rear + 1) % size == front;
}
// 释放内存
~CircularQueue() {
delete[] queue;
}
};
int main() {
CircularQueue<int> cq(5);
cq.enQueue(10);
cq.enQueue(20);
cq.enQueue(30);
while (!cq.isEmpty()) {
cout << "Front element: " << cq.Front() << endl;
cq.deQueue();
}
return 0;
}
```
这个循环队列支持`enQueue`(入队)和`deQueue`(出队)操作,并包含一些辅助方法如查看队首、判断队空和队满。请注意,这是基础实现,实际应用中可能需要添加错误检查和其他功能。
阅读全文