用c++的方法初始化循环队列,使得循环队列的MAXSIZE为6,从键盘输入5个字符入队,从队头到队尾输出队列中所有元素
时间: 2024-11-06 07:17:39 浏览: 26
在C++中,我们可以使用数组来实现一个循环队列,因为数组可以提供索引访问以及通过索引溢出处理达到“循环”的效果。首先,我们需要定义一个结构体表示队列元素,然后创建一个大小为MAXSIZE+1的数组,因为数组下标从0开始,这样最后一个元素的下一个位置就是第一个元素。
以下是一个简单的示例:
```cpp
#include <iostream>
using namespace std;
const int MAXSIZE = 6;
// 队列元素结构
struct QueueElement {
char data;
bool isOccupied; // 标记元素是否已被填充
};
// 循环队列实现
class CircularQueue {
private:
QueueElement queue[MAXSIZE + 1]; // 加一的原因见上文
int front, rear; // 队头和队尾指针
public:
// 构造函数,初始化队列为空
CircularQueue() : front(0), rear(0) {}
// 入队操作
void enqueue(char ch) {
if ((rear + 1) % (MAXSIZE + 1) == front) { // 队满
cout << "Queue is full.\n";
return;
}
queue[rear].data = ch;
queue[rear].isOccupied = true;
rear = (rear + 1) % (MAXSIZE + 1); // 满足循环条件
}
// 出队操作
void dequeue() {
if (front == rear) { // 空队列
cout << "Queue is empty.\n";
return;
}
queue[front].isOccupied = false; // 更新队首元素状态
front = (front + 1) % (MAXSIZE + 1);
}
// 输出队列内容
void display() {
if (front > rear) { // 队列非空
for (int i = front; i != rear; i = (i + 1) % (MAXSIZE + 1)) {
cout << queue[i].data;
}
if (front == 0) { // 如果队头指向末尾,加上最后的元素
cout << queue[rear].data;
}
} else { // 只有一个元素
cout << queue[front].data;
}
cout << endl;
}
};
int main() {
CircularQueue cq;
for (int i = 0; i < 5; ++i) {
char input;
cout << "Enter character: ";
cin >> input;
cq.enqueue(input);
}
cq.display(); // 输出队列中的所有元素
return 0;
}
```
在这个例子中,用户会依次输入5个字符,每次入队后,队列的内容会被存储并显示出来。如果队列满了,就无法再加入新的元素,并给出提示。如果队列是空的,也无法删除元素,同样会有相应提示。
阅读全文