- 在顺序栈中,如果使用数组 S(1:50),并采用 top = 51 为初始空栈状态,说明:
- 入栈操作为:
top = top - 1; S(top) = x;
- 所以第一个入栈的元素会放在 S(50),
- 第二个入栈的元素放在 S(49),
- …
- 最多可以入栈 50 个元素,此时 top = 1。
这种情况下,栈底(即栈的固定底端)对应的是数组的 S(1) 还是 S(50)?栈底对应的数组下标是多少?
在严蔚敏的教材中,对于顺序栈有两种常见实现:
- 栈底在 S[0],top 初始为 -1(C 语言风格,从低地址向高地址增长);
- 栈底在 S[1],top 初始为 0;
- 但也有题目中出现:栈的存储空间 S(1:50),top 初始为 51 —— 这是一种栈底在 S(50),向 S(1) 方向增长的实现。
- 初始:top = 51 → 空栈;
- 入栈一个元素:top = 50,S(50) = x;
- 此时栈中只有一个元素,它既是栈顶也是栈底 → 位于 S(50);
- 所以栈底位置是 50;
- bottom 是固定的,始终为 50(在该实现中)。