跳到主要内容

二、栈的初始化(顺序栈)

顺序栈采用静态数组存储元素,需定义栈顶指针top

1. 初始化规则

- 栈空时,`top`指向`data[0]`上一个位置,即**top = -1**
- 判空条件:`top == -1`时栈空,`top != -1`时栈非空

初始化操作主要是完成对栈空间的申请,以及指针的归位。

关键点

空栈的标志S.top == S.base

Step 1/5初始状态:声明了一个结构体 S,但内部指针未初始化 (NULL)。
1// 顺序栈结构定义
2typedef struct {
3 int *base; // 栈底指针
4 int *top; // 栈顶指针
5 int stackSize; // 当前已分配容量
6} SqStack;
7
8// 初始化函数
9void InitStack(SqStack &S) {
10 // 1. 分配内存 (假设 MAX_SIZE = 5)
11 S.base = new int[MAX_SIZE];
12
13 // 2. 内存分配失败检查
14 if (!S.base) exit(0);
15
16 // 3. 设置栈顶初值 (空栈时 top == base)
17 S.top = S.base;
18
19 // 4. 设置栈容量
20 S.stackSize = MAX_SIZE;
21}
Struct S
base:NULL
top:NULL
size:0
Heap Memory

2. 初始化代码示例

你可以直接在下方修改代码并点击运行:

C++
Output:
Click "Run" to see output...

💬 留下你的问题或见解