如何在C++中定义和实现一个顺序栈(Stack)数据结构类型?
时间: 2024-10-21 22:13:59 浏览: 27
C++数据结构实验_实现共享栈,链栈,循环队列,链队列
在C++中,你可以通过标准模板库(STL)中的`stack`容器来直接使用顺序栈,它是一个后进先出(LIFO,Last In First Out)的数据结构。如果你想自定义一个简单的顺序栈,可以创建一个模板类,如下所示:
```cpp
template <typename T>
class SimpleStack {
private:
std::vector<T> elements; // 用于存储元素的动态数组
public:
// 构造函数
SimpleStack() {}
// 检查栈是否为空
bool isEmpty() const {
return elements.empty();
}
// 返回栈顶元素但不移除
T top() const {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
return elements.back(); // 最后一个元素是栈顶
}
// 将元素推入栈顶
void push(const T& value) {
elements.push_back(value);
}
// 移除并返回栈顶元素
T pop() {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
T result = top(); // 先保存栈顶元素
elements.pop_back(); // 然后移除它
return result;
}
// 清空栈
void clear() {
elements.clear();
}
};
```
在这个简单版本中,我们使用了`std::vector`作为底层存储,它提供了动态大小调整的功能。注意,这个实现并没有处理溢出(push时超过容量),在实际项目中可能会需要添加额外的错误检查。
阅读全文