c++ 实现支持单一数据类型且长度有限的栈
时间: 2024-10-20 15:09:22 浏览: 16
第-章-数据类型运算符表达式优秀文档.ppt
在 C++ 中,可以使用标准模板库 (STL) 提供的 `stack` 或者自定义一个简单数组作为基础来创建一个只支持单一数据类型且长度有限的栈。这里是一个基本的例子,我们将使用数组作为底层容器:
```cpp
template <typename T, size_t SIZE>
class LimitedStack {
private:
T stack[SIZE]; // 定义固定大小的动态数组作为栈
size_t top = 0; // 栈顶指针
public:
LimitedStack() {}
// 入栈操作
void push(const T& value) {
if (top < SIZE - 1) {
stack[top++] = value;
} else {
throw std::overflow_error("Stack is full");
}
}
// 出栈操作
T pop() {
if (top > 0) {
T value = stack[--top];
return value;
} else {
throw std::underflow_error("Stack is empty");
}
}
// 查看栈顶元素但不移除
const T& top() const {
if (top != 0) {
return stack[top - 1];
} else {
throw std::runtime_error("Stack is empty");
}
}
// 检查栈是否为空
bool isEmpty() const {
return top == 0;
}
// 检查栈是否已满
bool isFull() const {
return top == SIZE;
}
};
```
在这个例子中,`T` 是支持的数据类型,而 `SIZE` 是预设的最大容量。这个栈不支持动态扩容,当试图向满的栈中添加元素时会抛出异常。
阅读全文