常见错误
错误 1:用第一个值等待运算符
错误做法:弹出 5 后不赋值,而是等运算符出现。
Step 1: POP→5 (waiting)
Step 2: POP→12 (waiting)
Step 3: POP→+ → 5 + 12 = 17
正确做法:第一个弹出值直接作为 total。
Step 1: POP→5 → total = 5
Step 2: POP→12 → (wait)
Step 3: POP→+ → 5 + 12 = 17
错误 2:运算顺序颠倒
错误做法:- 和 / 时顺序弄反。
total = 10, POP→3, POP→- → 3 - 10 = -7 (错!)
正确做法:total - val。
total = 10, POP→3, POP→- → 10 - 3 = 7 (对!)
错误 3:忽略栈的 LIFO 特性
错误做法:认为栈底部最先弹出。
Stack: top [5, 12, +, 3, *] bottom
错误:先弹出 *
正确做法:从 top 开始弹出。
Step 1: POP→5
错误 4:跳过 detail/working 列
错误做法:只写弹出的值,不写计算过程。
Step | Popped | Total
1 | 5 | 5
正确做法:补充 working 列,展示计算过程。
Step | Popped | Total | Working
1 | 5 | 5 | total = 5
错误 5:运算符弹出后忘记弹操作数
错误做法:弹出 + 后直接计算,但未弹出第二个操作数。
POP→+, total = total + ? (缺操作数)
正确做法:每弹出一个运算符,紧接着弹出下一个值作为操作数。
POP→+, POP→12 → total = 5 + 12
错误 6:混淆栈与队列
| 数据结构 | 顺序 | 弹出位置 |
|---|---|---|
| 栈 Stack | LIFO | 从顶部弹 |
| 队列 Queue | FIFO | 从底部出 |
常见警告
- 不要假设栈中数字和运算符严格交替(可能连续两个数字再运算符)。
- 不要忽略整数除法(
/在 9618 中通常指整数除法,注意 CIE 出题惯例)。