如何在C++中定义和实现一个顺序栈(SQStack)类型?
时间: 2024-10-21 11:07:58 浏览: 60
在C++中,你可以通过定义一个模板类来创建一个顺序栈(SQStack),通常使用数组作为底层数据结构。以下是创建一个基本的顺序栈的步骤:
```cpp
template <typename T>
class SQStack {
private:
static const size_t MAX_SIZE = 10; // 定义栈的最大容量
T data[MAX_SIZE]; // 存储元素的数组
size_t top; // 栈顶指针
public:
// 构造函数
SQStack() : top(0) {}
// 检查栈是否为空
bool isEmpty() const { return top == 0; }
// 判断栈是否已满
bool isFull() const { return top == MAX_SIZE; }
// 入栈操作 (push)
void push(const T& value) {
if (isFull()) {
throw std::overflow_error("Stack overflow");
}
data[top++] = value;
}
// 出栈操作 (pop)
T pop() {
if (isEmpty()) {
throw std::underflow_error("Stack underflow");
}
T value = data[top - 1];
top--;
return value;
}
// 查看栈顶元素但不删除 (peek)
T peek() const {
if (isEmpty()) {
throw std::runtime_error("Peek operation on empty stack");
}
return data[top - 1];
}
// 清空栈
void clear() {
top = 0;
}
};
```
在这个实现中,我们使用了泛型模板`T`,使其适用于任何类型的元素。`push`、`pop`和`peek`方法分别用于添加元素、移除元素并查看顶部元素但不修改它。当栈满或空时,我们会抛出异常。
阅读全文