四則運算表示式 逆波蘭表示式

2021-07-25 22:46:37 字數 805 閱讀 1118

感覺是一塊比較偏門的東西,特此記錄下:

或者叫字尾表示式,我們原先用的一直都是中綴表示式,但是因為如果表示式過長,計算機計算起來不方便。需要先遍歷一邊,找出其中的()進行優先計算,如果有多個()疊加的話就更麻煩了。於是為了計算機的方便計算,將中綴表示式轉換成字尾表示式,計算機便可以使用棧的特性,來快速的計算乙個表示式。至於逆波蘭表示式這個名字,相傳是因為這個波蘭人的名字太複雜了,所以就用國籍命名了。

規則:從左到右遍歷中綴表示式的每個數字和符號,若是數字就輸出,即成為字尾表示式的一部分,若是符號,則判斷其與棧頂符號的優先順序,是右括號或優先順序不高於棧頂符號則棧頂元素依次出棧並輸出,並將當前符號進棧,只到最終輸出字尾表示式為止。

例如:9+(3-1)*3+10/2

1.輸出9,棧:+

2.輸出93,棧+(

3.輸出931,棧+(-

4.輸出931-,棧+

5.輸出931-3,棧+*

6.輸出931-3*+,棧+

7.輸出931-3*+10,棧+/

8.輸出931-3*+10 2,棧+/

9.輸出931-3*+10 2/+

規則:從左到右遍歷表示式的每個數字和符號,遇到是數字就進棧,遇到的是符號,就將處於棧頂兩個數字出棧,進行運算,運算結果進棧,一直到最終獲得結果。

例如:931-3*+10 2/+

1.棧931

2.計算3-1,棧92

3.棧923

4.計算2*3,棧96

5.計算9+6,棧15

6.棧15 10 2

7.計算10/2,棧15 5

8.計算15+5,棧20

四則運算表示式求值(字尾表示式 逆波蘭表示法)

小學的時候我們就學過數 算的規則 先乘除後加減,從左算到右,先括號內後括號外。對於9 3 1 3 10 2這樣乙個表示式,我們很快就知道結果是20。但是在計算機內部,是如何計算的呢?20世紀50年代,波蘭邏輯學家jan ukasiewicz想到了一種不需要括號的字尾表示法,我們稱之為逆波蘭表示 re...

逆波蘭表示式解決四則運算

逆波蘭表示式又叫做字尾表示式,它將複雜表示式轉換為可以依靠簡單的操作得到計算結果的表示式,解決了四則運算中括號改變運算子優先順序的問題。四則運算的表示式一般都是中綴表示式如 1 2 3 4 5,即操作符在兩個運算元之間。四則運算需要兩個步驟,一是把中綴表示式轉為字尾表示式,二是由字尾表達生成結果 c...

四則運算表示式求值

03 四則運算表示式求值 輸入輸入為四則運算表示式,僅由陣列 四則運算符 左右括號組成,不含空格。假設運算子結果都是整數。輸出輸出這個表示式的值 分析首先我們要搞清楚表示式的定義是什麼 表示式 由乙個或者多個項組成,多個項的表示式由 連線 項 由乙個或者多個因子組成,多個因子由 連線 因子 由 表示...