c++任意输入队列长度和队列中的元素值,创建一个队列,对其进行清空、销毁、入队、出队、取队头元素以及求队列元素个数操作,用顺序循环队列结构实现操作。
时间: 2024-11-22 18:40:10 浏览: 10
在C++中,我们可以使用`std::queue`模板类,结合数组或动态内存实现顺序循环队列。以下是基本步骤:
首先,定义一个基础类型和大小限制的顺序循环队列模板:
```cpp
template <typename T, size_t Size>
class CircularQueue {
private:
T data[Size];
size_t front, rear;
public:
// 构造函数,初始化队列为空
CircularQueue() : front(0), rear(0) {}
// 检查队列是否为空
bool isEmpty() const { return front == rear; }
// 检查队列是否已满
bool isFull() const { return (rear + 1) % Size == front; }
// 入队
void enqueue(T value) {
if (isFull()) {
throw std::overflow_error("Queue is full");
}
data[rear] = value;
rear = (rear + 1) % Size;
}
// 出队
void dequeue() {
if (isEmpty()) {
throw std::underflow_error("Queue is empty");
}
front = (front + 1) % Size;
}
// 取队头元素
T getFront() const {
if (isEmpty()) {
throw std::runtime_error("Queue is empty");
}
return data[front];
}
// 获取队列元素个数
size_t size() const { return (rear - front + Size) % Size; }
};
```
接下来你可以按照以下步骤进行操作:
```cpp
int main() {
CircularQueue<int, 5> queue;
// 清空队列
while (!queue.isEmpty()) {
queue.dequeue();
}
// 打印队列初始状态(应为空)
for (size_t i = 0; i < queue.size(); ++i) {
try {
std::cout << queue.getFront() << " ";
} catch (const std::exception& e) {
std::cout << "Error: " << e.what() << "\n";
}
queue.dequeue();
}
// 入队元素
for (int i = 0; i < 5; ++i) {
queue.enqueue(i);
}
// 输出并销毁队列
std::cout << "Queue after enqueue:\n";
while (!queue.isEmpty()) {
std::cout << queue.getFront() << " ";
queue.dequeue();
}
return 0;
}
```
阅读全文