跳到主要内容

常见错误


错误 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:混淆栈与队列

数据结构顺序弹出位置
栈 StackLIFO从顶部弹
队列 QueueFIFO从底部出

常见警告

  • 不要假设栈中数字和运算符严格交替(可能连续两个数字再运算符)。
  • 不要忽略整数除法(/ 在 9618 中通常指整数除法,注意 CIE 出题惯例)。

相关页面