设计一个类模板实现可以处理各种数据类型的队列tqueue。队列是一种先进先出的数据
时间: 2023-10-29 12:02:45 浏览: 66
可以使用类模板来实现可以处理各种数据类型的队列tqueue,具体设计如下:
```cpp
template<typename T>
class tqueue {
private:
struct Node {
T data;
Node* next;
};
Node* front;
Node* rear;
public:
tqueue() {
front = nullptr;
rear = nullptr;
}
bool isEmpty() {
return front == nullptr;
}
void enqueue(T value) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = nullptr;
if (isEmpty()) {
front = newNode;
rear = newNode;
} else {
rear->next = newNode;
rear = newNode;
}
}
T dequeue() {
if (isEmpty()) {
throw "Queue is empty!";
}
T value = front->data;
Node* temp = front;
front = front->next;
if (front == nullptr) {
rear = nullptr;
}
delete temp;
return value;
}
};
```
使用该类模板可以创建处理各种数据类型的队列,例如:
```cpp
tqueue<int> intQueue; // 创建一个处理int类型的队列
intQueue.enqueue(1);
intQueue.enqueue(2);
intQueue.enqueue(3);
cout << intQueue.dequeue() << endl; // 输出1
cout << intQueue.dequeue() << endl; // 输出2
tqueue<string> stringQueue; // 创建一个处理string类型的队列
stringQueue.enqueue("Hello");
stringQueue.enqueue("World");
cout << stringQueue.dequeue() << endl; // 输出Hello
cout << stringQueue.dequeue() << endl; // 输出World
```
这样设计的tqueue类模板可以处理各种数据类型的队列,实现了先进先出的数据结构。同时,可以通过enqueue方法将元素入队,通过dequeue方法将元素出队,并且具有判断队列是否为空的方法isEmpty。