C++程序编写完整,设计一个只能容纳10个元素的队列,如果入队元素超出了队列容量,就抛出一一个队列已满的异常; 如果队列已空还要从中取出元素,就抛出一个队列已空的异常。
时间: 2024-02-23 18:58:41 浏览: 111
好的,我知道了。这个问题需要用到C++中的异常处理机制。下面是一个简单的实现:
```cpp
#include <iostream>
#include <exception>
using namespace std;
class QueueFullException : public exception {
public:
virtual const char* what() const throw() {
return "Queue is full!";
}
};
class QueueEmptyException : public exception {
public:
virtual const char* what() const throw() {
return "Queue is empty!";
}
};
class Queue {
private:
int data[10];
int front, rear;
public:
Queue() : front(0), rear(0) {}
void enqueue(int x) {
if (rear == 10) {
throw QueueFullException();
}
data[rear++] = x;
}
int dequeue() {
if (front == rear) {
throw QueueEmptyException();
}
return data[front++];
}
};
int main() {
Queue q;
try {
for (int i = 0; i < 11; ++i) {
q.enqueue(i);
}
} catch (const exception& e) {
cerr << "Exception: " << e.what() << endl;
}
try {
for (int i = 0; i < 11; ++i) {
cout << q.dequeue() << endl;
}
} catch (const exception& e) {
cerr << "Exception: " << e.what() << endl;
}
return 0;
}
```
这是一个基本的队列实现,包括入队和出队操作。当队列已满时,会抛出一个 `QueueFullException` 异常;当队列已空时,会抛出一个 `QueueEmptyException` 异常。在 `main()` 函数中,我们演示了如何使用这个队列,并且捕获了可能抛出的异常。
阅读全文