什么是堆栈堆栈(Stack)?
堆栈是一种遵循后进先出(LIFO)原则的数据结构,支持两种核心操作:
1. 压栈(Push):将元素添加到栈顶
2. 弹栈(Pop):移除栈顶元素
C++实现堆栈的原理3种方式
1. 数组实现
```cpp
define MAX 1000
class Stack {
int top;
public:
int a[MAX];
Stack { top = -1; }
bool push(int x) {
if (top >= MAX-1) return false;
a[++top] = x;
return true;
int pop {
if (top < 0) return 0;
return a[top--];
};
```
2. 链表实现
```cpp
struct Node {
int data;
Node next;
Node(int val) : data(val), next(nullptr) { }
};
class Stack {
Node top;
public:
void push(int val) {
Node temp = new Node(val);
temp->next = top;
top = temp;
void pop {
if (!top) return;
Node temp = top;
top = top->next;
delete temp;
};
```
3. STL标准库(推荐)
```cpp
include
std::stack
// 基本操作
stk.push(10); // 压栈
stk.pop; // 弹栈(需先检查空栈)
int top = stk.top; // 获取栈顶
bool isEmpty = stk.empty; // 判空
```
堆栈的典型应用场景
常见问题解决方案
1. 栈溢出
通过动态扩容(如STL实现)或预先分配足够空间
2. 空栈访问
调用top或pop前检查是否为空:
```cpp
if (!stk.empty) {
stk.pop;
```
3. 性能优化
选择建议
掌握堆栈的底层逻辑和STL的高效用法,能显著提升算法实现和系统设计的堆栈代码质量。
原理