用c++设计一个只能容纳有限个元素的队列类,当队列满时添加元素就抛出一个队列满异常;当队列空时取出元素,就抛出一个队列空异常。编写程序并测试队列类。要求:使用动态数组存放队列元素。
时间: 2024-04-15 20:22:49 浏览: 165
用c++写的队列程序
在C++中设计一个只能容纳有限个元素的队列类,可以使用动态数组来存放队列元素。以下是一个简单的实现示例:
```cpp
#include <iostream>
class Queue {
private:
int* arr; // 动态数组指针
int front; // 队列头指针
int rear; // 队列尾指针
int capacity; // 队列容量
int size; // 当前队列大小
public:
Queue(int capacity) {
this->capacity = capacity;
arr = new int[capacity];
front = 0;
rear = -1;
size = 0;
}
~Queue() {
delete[] arr;
}
bool isFull() {
return size == capacity;
}
bool isEmpty() {
return size == 0;
}
void enqueue(int element) {
if (isFull()) {
throw "队列已满";
}
rear = (rear + 1) % capacity;
arr[rear] = element;
size++;
}
int dequeue() {
if (isEmpty()) {
throw "队列为空";
}
int element = arr[front];
front = (front + 1) % capacity;
size--;
return element;
}
};
int main() {
try {
Queue queue(5);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);
std::cout << "Dequeued element: " << queue.dequeue() << std::endl;
std::cout << "Dequeued element: " << queue.dequeue() << std::endl;
queue.enqueue(6); // 队列已满,抛出异常
while (!queue.isEmpty()) {
std::cout << "Dequeued element: " << queue.dequeue() << std::endl;
}
queue.dequeue(); // 队列为空,抛出异常
}
catch (const char* exception) {
std::cout << "Exception: " << exception << std::endl;
}
return 0;
}
```
在上述代码中,我们定义了一个`Queue`类,其中包含了队列的基本操作:`enqueue`(入队)、`dequeue`(出队)、`isFull`(判断队列是否已满)、`isEmpty`(判断队列是否为空)。当队列满时,调用`enqueue`方法会抛出一个队列满异常;当队列空时,调用`dequeue`方法会抛出一个队列空异常。
测试代码中创建了一个容量为5的队列,并进行了一系列的入队和出队操作。当队列满或空时,捕获并打印相应的异常信息。
阅读全文