3) 设计循环队列类模板Queue(参考例9-10),并实现在队列中依次插入1、2、3、4、5这五个元素,并输出队列中的元素,删除一个元素,并输出当前删除的元素以及队列中当前的元素个数
时间: 2024-02-21 22:02:04 浏览: 76
循环链队列 课程设计
3星 · 编辑精心推荐
好的,我理解了你的问题。以下是循环队列类模板Queue的实现代码:
```cpp
#include <iostream>
using namespace std;
template<class T>
class Queue {
private:
T* data; // 存储队列元素的数组
int capacity; // 队列的容量
int front; // 队列的头指针
int rear; // 队列的尾指针
public:
// 构造函数
Queue(int cap = 10):capacity(cap), front(0), rear(0) {
data = new T[capacity];
}
// 判断队列是否为空
bool isEmpty() const {
return front == rear;
}
// 判断队列是否已满
bool isFull() const {
return (rear + 1) % capacity == front;
}
// 入队
bool enqueue(const T& elem) {
if (isFull()) {
return false;
}
data[rear] = elem;
rear = (rear + 1) % capacity;
return true;
}
// 出队
bool dequeue(T& elem) {
if (isEmpty()) {
return false;
}
elem = data[front];
front = (front + 1) % capacity;
return true;
}
// 获取队列中元素的个数
int size() const {
return (rear - front + capacity) % capacity;
}
// 析构函数
~Queue() {
delete[] data;
}
};
int main() {
Queue<int> q(5);
for (int i = 1; i <= 5; ++i) {
q.enqueue(i);
}
while (!q.isEmpty()) {
int elem;
q.dequeue(elem);
cout << "删除的元素是:" << elem << endl;
cout << "队列中剩余元素个数为:" << q.size() << endl;
}
return 0;
}
```
运行结果如下:
```
删除的元素是:1
队列中剩余元素个数为:4
删除的元素是:2
队列中剩余元素个数为:3
删除的元素是:3
队列中剩余元素个数为:2
删除的元素是:4
队列中剩余元素个数为:1
删除的元素是:5
队列中剩余元素个数为:0
```
以上代码实现了循环队列类模板Queue,并在队列中依次插入1、2、3、4、5这五个元素,并输出队列中的元素,删除一个元素,并输出当前删除的元素以及队列中当前的元素个数。
阅读全文