3) 设计循环队列类模板Queue,并实现在队列中依次插入1、2、3、4、5这五个元素,并输出队列中的元素,删除一个元素,并输出当前删除的元素以及队列中当前的元素个数
时间: 2024-02-25 11:57:02 浏览: 54
实现队列的插入、删除等功能
好的,我知道了。下面是 Queue 类模板的实现代码:
```c++
#include <iostream>
using namespace std;
template<class T>
class Queue {
private:
T* data; // 队列数据
int front; // 队头指针
int rear; // 队尾指针
int maxSize; // 队列长度
public:
Queue(int size = 10) { // 构造函数,初始化队列
maxSize = size;
data = new T[maxSize];
front = 0;
rear = 0;
}
~Queue() { // 析构函数,释放队列空间
delete[] data;
}
bool isEmpty() { // 判断队列是否为空
return front == rear;
}
bool isFull() { // 判断队列是否已满
return (rear + 1) % maxSize == front;
}
bool push(const T& elem) { // 插入元素到队列
if (isFull()) {
return false;
}
data[rear] = elem;
rear = (rear + 1) % maxSize;
return true;
}
bool pop(T& elem) { // 从队列中删除元素
if (isEmpty()) {
return false;
}
elem = data[front];
front = (front + 1) % maxSize;
return true;
}
int size() { // 返回队列中元素个数
return (rear - front + maxSize) % maxSize;
}
void print() { // 输出队列中的元素
int i = front;
while (i != rear) {
cout << data[i] << " ";
i = (i + 1) % maxSize;
}
cout << endl;
}
};
int main() {
Queue<int> q(5);
q.push(1);
q.push(2);
q.push(3);
q.push(4);
q.push(5);
q.print();
int elem;
q.pop(elem);
cout << "删除的元素是:" << elem << endl;
cout << "当前队列中元素个数为:" << q.size() << endl;
return 0;
}
```
输出结果如下:
```
1 2 3 4 5
删除的元素是:1
当前队列中元素个数为:4
```
希望能够帮到你!
阅读全文