用C++实现一个栈数据结构,包括入栈,出栈和判断栈空
时间: 2024-12-02 09:19:50 浏览: 17
在C++中,我们可以使用数组或动态内存来实现一个基本的栈数据结构。这里是一个简单的线性栈(Array Stack)示例,它包含push(入栈)、pop(出栈)和is_empty(判断栈是否为空)的操作:
```cpp
#include <iostream>
template <typename T>
class Stack {
private:
int top; // 栈顶元素的索引
T* data; // 存储栈元素的数组
public:
Stack(int size) : top(-1), data(new T[size]) {}
~Stack() { delete[] data; } // 析构函数释放内存
// 入栈操作
void push(T item) {
if (top < size - 1) {
data[++top] = item;
} else {
std::cout << "Stack overflow!" << std::endl;
}
}
// 出栈操作
T pop() {
if (is_empty()) {
std::cout << "Stack underflow!" << std::endl;
return T(); // 返回默认值或抛异常
} else {
return data[top--]; // 返回并移除栈顶元素
}
}
// 判断栈是否为空
bool is_empty() const {
return top == -1;
}
};
int main() {
Stack<int> myStack(5);
myStack.push(10);
myStack.push(20);
if (!myStack.is_empty()) {
std::cout << "Top element: " << myStack.pop() << std::endl;
}
return 0;
}
```
在这个例子中,我们创建了一个模板类Stack,可以存储任意类型的元素。注意,这个栈是固定大小的,在创建时需要指定大小。当栈满时,push操作会显示错误信息。同样,如果试图从空栈中弹出元素,pop操作也会显示错误。
阅读全文