使用C++设计循环队列类模板Queue,并实现在队列中依次插入1、2、3、4、5这五个元素,并输出队列中的元素,删除一个元素,并输出当前删除的元素以及队列中当前的元素个数
时间: 2024-02-29 16:53:00 浏览: 131
好的,您的要求已经记录下来了。关于您的问题,我可以给您提供以下C++代码来实现:
```cpp
#include <iostream>
using namespace std;
template <typename T>
class Queue {
public:
Queue() : front_(0), rear_(0), size_(0) {}
bool empty() const { return size_ == 0; }
bool full() const { return size_ == capacity_; }
size_t size() const { return size_; }
size_t capacity() const { return capacity_; }
void push(const T& value) {
if (full()) {
cout << "Queue is full!" << endl;
return;
}
elements_[rear_] = value;
rear_ = (rear_ + 1) % capacity_;
size_++;
}
void pop() {
if (empty()) {
cout << "Queue is empty!" << endl;
return;
}
front_ = (front_ + 1) % capacity_;
size_--;
}
T front() const {
if (empty()) {
cout << "Queue is empty!" << endl;
return T();
}
return elements_[front_];
}
T back() const {
if (empty()) {
cout << "Queue is empty!" << endl;
return T();
}
return elements_[(rear_ + capacity_ - 1) % capacity_];
}
private:
static const size_t capacity_ = 5;
T elements_[capacity_];
size_t front_;
size_t rear_;
size_t size_;
};
int main() {
Queue<int> q;
// 依次插入1~5这五个元素
for (int i = 1; i <= 5; i++) {
q.push(i);
}
// 输出队列中的元素
while (!q.empty()) {
cout << q.front() << " ";
q.pop();
}
// 删除一个元素
q.pop();
// 输出当前删除的元素以及队列中当前的元素个数
cout << "\nDeleted element: " << q.front() << endl;
cout << "Current size of the queue: " << q.size() << endl;
return 0;
}
```
在这段代码中,我们设计了一个循环队列类模板 `Queue`,并实现了 `empty()`、`full()`、`size()`、`capacity()`、`push()`、`pop()`、`front()` 和 `back()` 等成员函数。其中,`front_` 和 `rear_` 分别表示队首和队尾元素的下标,`size_` 表示队列中元素的个数。
在 `push()` 函数中,我们首先判断队列是否已满,如果已满则输出错误信息并返回,否则将元素插入到队尾,并更新队尾下标和元素个数。在 `pop()` 函数中,我们首先判断队列是否为空,如果为空则输出错误信息并返回,否则将队首元素出队,并更新队首下标和元素个数。在 `front()` 和 `back()` 函数中,我们分别返回队首和队尾元素。
在 `main()` 函数中,我们使用 `Queue` 类模板创建了一个整型队列 `q`,依次插入1~5这五个元素,并输出队列中的元素。接着,我们删除一个元素,这里选择删除队首元素。删除元素后,我们输出当前删除的元素以及队列中当前的元素个数。
希望这段代码能够解答您的问题。如果您还有其他问题,请继续提出。
阅读全文