Reverse Polish Notation

逆波蘭表示法(RPN - Reverse Polish Notation)是一種數學表達式的表示方式,又稱為後綴表示法。

Postfix Notation (後綴表示法)

運算子位於運算元之後。

7 3 + 4 2   5 / 7\ 3\ +\ 4\ 2\ -\ *\ 5\ /

Infix Notation (中綴表示法)

運算子位於運算元之間,是人類最常用的表示法。

((7+3)(42))/5 ((7 + 3) * (4 - 2)) / 5

Prefix Notation (前綴表示法)

運算子位於運算元之前,又稱波蘭表示法。

/  + 7 3  4 2 5 /\ *\ +\ 7\ 3\ -\ 4\ 2\ 5

Comparison

表示法範例特點
Infix (中綴)(7 + 3) * (4 - 2) / 5需要括號來定義優先級
Postfix (後綴/RPN)7 3 + 4 2 - * 5 /不需要括號,適合堆疊計算
Prefix (前綴)/ * + 7 3 - 4 2 5不需要括號,從右到左計算

Stack-based Evaluation

RPN 可以使用 Stack 進行計算:

  1. 從左到右掃描表達式
  2. 遇到運算元時,Push 到 Stack
  3. 遇到運算子時,Pop 兩個運算元進行計算,結果 Push 回 Stack
  4. 最後 Stack 中剩下的值即為結果