用c++编写循环队列中利用count记录队中元素个数,设置标志位flag来区分空/队满实现代码
时间: 2024-11-15 22:23:10 浏览: 3
C++实现循环队列
在C++中,你可以使用模板类`template <typename T>`来创建一个循环队列,同时通过成员变量`count`来记录元素个数,`flag`表示队列的状态(空或满)。下面是一个简单的实现示例:
```cpp
#include <iostream>
template <typename T>
class CircularQueue {
private:
static const int MAX_SIZE = 10; // 队列最大容量
T data[MAX_SIZE];
int front, rear; // 前端和后端指针
int count; // 元素个数
bool flag; // 标志位
public:
// 构造函数
CircularQueue() : front(0), rear(0), count(0), flag(false) {}
// 插入元素(队满处理)
void enqueue(T value) {
if (isFull()) {
std::cout << "Queue is full.\n";
return;
}
data[rear] = value;
rear = (rear + 1) % MAX_SIZE; // 循环数组
count++;
flag = false; // 未满,状态置空
}
// 删除元素(队空处理)
void dequeue() {
if (isEmpty()) {
std::cout << "Queue is empty.\n";
return;
}
data[front] = T(); // 默认值,也可以根据需要填充
front = (front + 1) % MAX_SIZE;
count--;
flag = false; // 未空,状态置空
}
// 检查队列是否为空
bool isEmpty() const {
return count == 0;
}
// 检查队列是否已满
bool isFull() const {
return count == MAX_SIZE;
}
// 返回队列元素个数
int getCount() const {
return count;
}
// 显示队列内容
void display() const {
if (isEmpty()) {
std::cout << "Queue is empty.\n";
} else {
for (int i = front; i != rear; i = (i + 1) % MAX_SIZE) {
std::cout << data[i] << " ";
}
}
}
};
int main() {
CircularQueue<int> queue;
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.display(); // 输出 [1, 2, 3]
queue.dequeue();
queue.display(); // 输出 [2, 3]
return 0;
}
```
阅读全文