使用c++以顺序循环队列为例,设计一个主程序完成如下功能: 1)初始化队列q 2)依次进队列元素a,b,c 3)判断q是否为空 4)出队一个元素,并输出该元素 5)输出q的元素个数 6)依次进队列元素d,e,f 7)输出q的元素个数 8)输出出队序列 9)释放q
时间: 2024-10-20 22:03:19 浏览: 19
数据结构与算法C++实现 循环顺序队列的初始化,求长度,入队,出队
5星 · 资源好评率100%
在C++中,我们可以使用`std::queue`容器来自定义一个顺序循环队列,这里是一个简单的示例实现:
```cpp
#include <iostream>
#include <queue>
// 定义一个循环队列模板,使用int作为元素类型
template <typename T>
class CircularQueue {
public:
// 构造函数,初始化队列容量
CircularQueue(int capacity) : _capacity(capacity), _front(0), _rear(0) {}
// 插入元素到队尾
void enqueue(T value) {
if (_rear == _capacity - 1) {
std::cout << "Queue is full.\n";
return;
}
_elements[_rear] = value;
_rear = (_rear + 1) % _capacity; // 循环队列
}
// 从队头删除并返回元素
T dequeue() {
if (_front == _rear) {
std::cout << "Queue is empty.\n";
return T(); // 返回默认值表示空
}
T value = _elements[_front];
_front = (_front + 1) % _capacity;
return value;
}
// 判断队列是否为空
bool isEmpty() const { return _front == _rear; }
// 获取队列元素个数
int size() const { return _rear >= _front ? _rear - _front : _capacity - _front; }
private:
int _capacity, _front, _rear;
T _elements[_capacity]; // 存储元素的数组,使用模运算保持循环
};
// 主程序
int main() {
// 初始化队列
CircularQueue<int> queue(5);
queue.enqueue(1); // 进队 a
queue.enqueue(2); // 进队 b
queue.enqueue(3); // 进队 c
// 输出是否为空
std::cout << "Is the queue empty? " << (queue.isEmpty() ? "Yes" : "No") << "\n";
// 出队并输出
int element = queue.dequeue();
std::cout << "Dequeued element: " << element << "\n";
// 输出当前元素个数
std::cout << "Current queue size: " << queue.size() << "\n";
// 再次进队 d, e, f
queue.enqueue(4);
queue.enqueue(5);
queue.enqueue(6);
// 输出再次插入后元素个数
std::cout << "After inserting more elements: " << queue.size() << "\n";
// 输出出队序列
std::cout << "Output sequence after dequeueing: ";
while (!queue.isEmpty()) {
std::cout << queue.dequeue() << " ";
}
std::cout << "\n";
// 释放队列
queue = CircularQueue<int>(); // 或者手动销毁queue对象
return 0;
}
```
运行上述代码会按照题目要求完成所有操作。请注意,这只是一个简化版本的实现,实际应用中可能会加入异常处理等细节。
阅读全文