用c++生成一个双端队列的类
时间: 2024-09-25 21:16:33 浏览: 40
双端队列源代码
在C++中,可以使用STL(Standard Template Library)提供的`std::deque`(双端队列)来创建一个自定义的双端队列类。`deque`是一个动态数组,允许在两端高效地添加或删除元素。下面是一个简单的双端队列类的示例:
```cpp
#include <iostream>
#include <deque>
// 自定义双端队列类模板
template <typename T>
class DoublyLinkedList {
private:
std::deque<T> data; // 使用标准库的双端队列
public:
// 构造函数
DoublyLinkedList() {}
// 插入元素到前端
void push_front(T value) {
data.push_front(value);
}
// 插入元素到后端
void push_back(T value) {
data.push_back(value);
}
// 获取前端元素并移除
T pop_front() {
if (data.empty()) {
throw std::runtime_error("Queue is empty");
}
return data.front(); // 返回并移除首元素
}
// 获取后端元素并移除
T pop_back() {
if (data.empty()) {
throw std::runtime_error("Queue is empty");
}
return data.back(); // 返回并移除尾元素
}
// 查看前端元素但不移除
T front() const {
if (data.empty()) {
throw std::runtime_error("Queue is empty");
}
return data.front();
}
// 查看后端元素但不移除
T back() const {
if (data.empty()) {
throw std::runtime_error("Queue is empty");
}
return data.back();
}
// 遍历打印队列
void print() const {
for (const auto& item : data) {
std::cout << item << " ";
}
std::cout << std::endl;
}
};
int main() {
DoublyLinkedList<int> dl;
dl.push_back(10);
dl.push_front(5);
dl.print(); // 输出: 5 10
dl.pop_front();
dl.pop_back();
dl.print(); // 如果没有其他操作,这里将不会有任何输出
return 0;
}
```
阅读全文