写出顺序循环队列的入队和出队的主函数
时间: 2024-12-01 17:30:21 浏览: 0
数据结构 循环队列 入队 出队
4星 · 用户满意度95%
顺序循环队列是一种常见的数据结构,它通过数组实现,并利用队尾溢出到队头的特性保持元素的连续存储。以下是顺序循环队列的入队(Enqueue)和出队(Dequeue)操作的主函数示例,假设我们有一个名为`CircularQueue`的类:
```c++
#include <iostream>
// 假设数组大小为MaxSize
#define MaxSize 10
class CircularQueue {
private:
int front, rear; // front用于指向队首元素,rear用于指向下一个将要入队的位置(实际位置)
int queue[MaxSize];
public:
// 初始化队列为空
CircularQueue() : front(0), rear(0) {}
// 判断队列是否满
bool isFull() {
return (rear + 1) % MaxSize == front;
}
// 判断队列是否空
bool isEmpty() {
return front == rear;
}
// 入队操作
void enqueue(int value) {
if (!isFull()) {
rear = (rear + 1) % MaxSize; // 循环更新rear
queue[rear] = value;
std::cout << "Enqueued: " << value << std::endl;
} else {
std::cout << "Queue is full. Cannot enqueue." << std::endl;
}
}
// 出队操作
int dequeue() {
if (!isEmpty()) {
int removedValue = queue[front]; // 保存并移除队首元素
front = (front + 1) % MaxSize; // 更新front
std::cout << "Dequeued: " << removedValue << std::endl;
return removedValue;
} else {
std::cout << "Queue is empty. Cannot dequeue." << std::endl;
return -1; // 返回特殊值表示错误,可根据实际情况处理
}
}
};
int main() {
CircularQueue cq;
// 测试入队
for (int i = 0; i < 5 && !cq.isFull(); ++i) {
cq.enqueue(i);
}
// 测试出队
while (!cq.isEmpty()) {
int dequeued = cq.dequeue();
if (dequeued != -1) {
std::cout << "After dequeue, front: " << cq.front << ", rear: " << cq.rear << std::endl;
}
}
return 0;
}
```
这个示例展示了如何创建一个顺序循环队列,并进行了几次入队和出队的操作。在`main()`函数里,你可以根据需要添加更多的队列操作。
阅读全文