中綴表示式與字尾表示式的轉換及字尾表示式的計算
阿新 • • 發佈:2019-01-27
一.字尾表示式的計算
字尾表示式:
指的是不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行。(不再考慮運算子的優先規則)。
中綴表示式:
也就是我們日常最容易見到的表示式,從左至右考慮運算子的優先原則。
首先,我們以電腦的思維計算字尾表示式,這裡必須用到棧的知識,棧通俗來講就像一個桶,它裡邊存放的東西必須滿足先進後出的原則。
我們以表示式1 2 4 8 2 - 7 4 - / * + *為例講解。
**字尾表示式用棧計算的原則就是遇到數字就入棧,遇到運算子就把棧頂兩數字計算,再把計算結果入棧,這樣反覆直到棧空。**
具體過程如下:
第一步:1,2,4,8,2按順序進棧,遇減號,棧頂2做減數,8做被減數,相減得6入棧
第二步:7,4按順序進棧,遇減號 ,棧頂4做減數,7做被減數,相減得3入棧
第三步: 遇除號,棧頂3作為除數,6作為被除數,運算得2入棧
第四步:遇乘號,棧頂元素2,4相乘得8入棧
第五步:遇加號,棧頂元素8,2相乘得10入棧
第六步:遇乘號,棧頂元素10,1相乘得10入棧
第七步:輸出棧底元素10,即該字尾表示式結果為10
以上就是字尾表示式求解的思想
二.中綴表示式與字尾表示式的轉換
對於中綴表示式與字尾表示式的轉換有一個簡便方法,就是先用括號按運算子優先順序把中綴表示式一層一層括起來,每遇到一個括號,就把括號裡面的運算子放在本層括號外邊,直到把所有的運算子都都放在括號外邊,再把括號去掉,得到的表示式就是對應的字尾表示式。
例如:x=a+b*(c-d)/e
x = a + ( b * ( c - d) ) / e x = a + ( (b * ( c - d ) ) / e ) x = ( (a + ( ( b * ( c - d ) ) / e ) ) x = ( (a + ( b * (c d )- ) ) / e ) ) x = ( ( a + ( b (c d)- ) * ) / e) ) x = ( ( a ( b (c d) - ) * ) e ) / )+ ( x ( ( a ( b) c d ) - ) * ) e ) / ) + ) = 最後把括號去掉:x a b c d - * e / + =
其實按這個方法真的是既簡單又不容易錯,希望可以幫助到大家,如果有什麼錯誤,也歡迎大家指出,謝謝。