用C++实现堆栈,包括堆栈的生成,压栈,出栈操作
时间: 2024-09-29 10:12:55 浏览: 46
C++堆栈类模板实现代码
5星 · 资源好评率100%
在C++中,我们可以使用数组或动态内存分配(如`std::vector`)来实现堆栈。这里我会给出一个简单的基于数组的堆栈实现:
```cpp
#include <iostream>
// 定义堆栈的最大容量
const int MAX_SIZE = 50;
class Stack {
private:
// 存储数据的数组
int data[MAX_SIZE];
// 栈顶元素的索引
int top;
public:
// 构造函数,初始化空堆栈
Stack() : top(-1) {}
// 判断堆栈是否为空
bool isEmpty() const { return top == -1; }
// 检查堆栈是否已满
bool isFull() const { return top == MAX_SIZE - 1; }
// 压栈操作(入栈)
void push(int value) {
if (isFull()) {
std::cout << "Stack overflow!" << std::endl;
return;
}
data[++top] = value;
std::cout << "Pushed element: " << value << std::endl;
}
// 出栈操作(退栈)
int pop() {
if (isEmpty()) {
std::cout << "Stack underflow!" << std::endl;
return -1; // 返回特殊值表示失败
}
return data[top--];
}
// 获取堆栈顶部元素(但不删除)
int peek() const {
if (isEmpty()) {
std::cout << "Stack is empty." << std::endl;
return -1; // 返回特殊值表示无元素
}
return data[top];
}
};
int main() {
Stack s;
s.push(10);
s.push(20);
std::cout << "Top element: " << s.peek() << std::endl;
std::cout << "Popped element: " << s.pop() << std::endl;
return 0;
}
```
在这个例子中,我们创建了一个名为`Stack`的类,包含私有成员变量`data`存储数据、`top`记录栈顶位置以及几个公共方法:`push`用于压栈,`pop`用于出栈,`peek`用于查看但不删除栈顶元素。注意,这个简单版本的堆栈没有处理异常情况,实际应用中需要添加适当的错误检查。
阅读全文