利用循环队列的基本运算和《教程》中例3.13求循环队列元素个数的算法,生成代码
时间: 2023-07-24 10:42:00 浏览: 113
循环队列的基本运算包括入队、出队、判断队列是否为空、判断队列是否已满等。
下面是基于数组实现的循环队列的代码:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 定义队列最大长度
template <class T>
class CircleQueue {
private:
T queue[MAXSIZE]; // 队列数组
int front, rear; // 队头、队尾指针
public:
CircleQueue() { // 初始化队列
front = rear = 0;
}
bool isEmpty() { // 判断队列是否为空
return front == rear;
}
bool isFull() { // 判断队列是否已满
return (rear + 1) % MAXSIZE == front;
}
int size() { // 求队列元素个数
return (rear - front + MAXSIZE) % MAXSIZE;
}
void enqueue(T x) { // 入队
if (isFull()) {
cout << "Queue is full!" << endl;
return;
}
queue[rear] = x;
rear = (rear + 1) % MAXSIZE;
}
T dequeue() { // 出队
if (isEmpty()) {
cout << "Queue is empty!" << endl;
exit(1);
}
T x = queue[front];
front = (front + 1) % MAXSIZE;
return x;
}
};
int main() {
CircleQueue<int> q;
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
cout << q.size() << endl; // 输出队列元素个数
q.dequeue();
cout << q.size() << endl; // 输出队列元素个数
return 0;
}
```
另外,例3.13求循环队列元素个数的算法如下:
```c++
int size() {
return (rear - front + MAXSIZE) % MAXSIZE;
}
```
其中,`front`表示队头指针,`rear`表示队尾指针,`MAXSIZE`表示队列最大长度。该算法利用了循环队列的特点,通过取模运算计算出队列中元素个数。
阅读全文