中綴表示式轉字尾表示式及字尾表示式的計算

2021-09-24 17:13:22 字數 898 閱讀 7086

這裡舉個栗子手動轉換叭:

ps:以下紅色括號皆為新增後的效果!

中綴表示式:(5+20+1*3)/14

按運算子優先順序對所有運算子和它的運算數加括號(原本的括號不用加)

( (( 5+20) +( 1*3)) / 14)

運算子移到對應的括號後(此處注意括號的變化)

( (( 5 20) +( 1 3) * ) + 14) /

去掉括號

字尾表示式:5 20 + 1 3 * +14 /

字尾表示式也叫逆波蘭表示式,其求值過程可以用到來輔助儲存。假定待求值的字尾表示式為:6 5 2 3 + 8 * + 3 + *,則其求值過程如下:

遍歷表示式,遇到的數字首先放入棧中,此時棧如下所示:

接著讀到「+」,則彈出3和2,執行3+2,計算結果等於5,並將5壓入到棧中。

讀到8,將其直接放入棧中。

讀到 「 * 」,彈出8和5,執行8*5,並將結果40壓入棧中。而後過程類似,讀到「+」,將40和5彈出,將40+5的結果45壓入棧…以此類推。最後求的值288。

字首 中綴 字尾表示式及中綴轉字尾表示式

字首表示式 不含括號的算術表示式,而且是將運算子寫在前面,運算元寫在後面的表示式。求法 首先從右往左掃瞄表示式,從右邊第乙個字元判斷,如果當前字元是數字,則一直到字串的末尾再記錄下來 如果是運算子,則將右邊最近的兩個數字串做相應的運算,以此作為乙個新串並記錄下來。一直掃瞄到最左端停止。例子 a b ...

中綴表示式轉字尾表示式

using system using system.collections.generic using system.text namespace 中綴表示式轉字尾表示式 class convert public void run top break case case while top 1 st...

中綴表示式轉字尾表示式

將乙個普通的中綴表示式轉換為字尾表示式的一般演算法是 首先需要分配2個棧,乙個作為臨時儲存運算子的棧s1 含乙個結束符號 乙個作為輸入字尾表示式的棧s2 空棧 s1棧可先放入優先順序最低的運算子 注意,中綴式應以此最低優先順序的運算子結束。可指定其他字元,不一定非 不可。從中綴式的左端開始取字元,逐...