C++实现循环队列的入队,出队,打印队列中的所有元素
时间: 2023-09-01 10:08:39 浏览: 349
循环队列是一种常用的队列实现方式,相比于普通队列,它可以更好地利用数组空间。循环队列中,队首和队尾指针都可以循环移动,从而实现循环队列的效果。
下面是 C++ 实现循环队列的入队、出队和打印队列中所有元素的示例代码:
```c++
#include <iostream>
using namespace std;
const int N = 100;
// 定义一个循环队列结构体
struct CircularQueue {
int data[N];
int front, rear; // 队首和队尾指针
CircularQueue() : front(0), rear(0) {}
// 判断队列是否为空
bool isEmpty() {
return front == rear;
}
// 判断队列是否已满
bool isFull() {
return (rear + 1) % N == front;
}
// 入队操作
bool enqueue(int x) {
if (isFull()) return false;
data[rear] = x;
rear = (rear + 1) % N;
return true;
}
// 出队操作
bool dequeue() {
if (isEmpty()) return false;
front = (front + 1) % N;
return true;
}
// 打印队列中的所有元素
void printQueue() {
int i = front;
while (i != rear) {
cout << data[i] << " ";
i = (i + 1) % N;
}
cout << endl;
}
};
int main() {
CircularQueue q;
// 入队操作
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
// 打印队列中的所有元素
q.printQueue();
// 出队操作
q.dequeue();
// 打印队列中的所有元素
q.printQueue();
return 0;
}
```
在这个示例中,我们定义了一个循环队列的结构体 `CircularQueue`,其中包含了队列的数据和队首、队尾指针。在入队操作中,我们首先判断队列是否已满,如果未满,则将元素插入队尾,并将队尾指针后移一位。在出队操作中,我们首先判断队列是否为空,如果不为空,则将队首指针后移一位。在打印队列中的所有元素时,我们使用一个循环变量 `i`,从队首开始遍历队列,直到遍历到队尾为止。