1. 程式人生 > >資料結構:中綴表示式和字尾表示式

資料結構:中綴表示式和字尾表示式

平常見到的表示式一般為中綴表示式,

a=b+c*d-e/f;
其後綴表示式為
a=bcd*+ef/-;
其中abcdef是運算數。
-+/*,這些是運算子,而且運算子的優先順序不同。
中綴表示式要掃描到後面運算子的優先順序不比前面高才開始進行運算。
如上慄,如果是中綴表示式,b+c,但由於後面的*優先順序高於+,這就導致中綴表示式求值比較麻煩.
運算流程如下:
1.掃描到*後面為-
2.c*d
3.b+c*d的值
4.e/f
5.b+c*d的值減去e/f的值
如果是使用的是字尾表示式,遇到運算數先入棧,遇到運算子取最近的兩個數(出棧)直接進行運算。使用入棧儲存abc,然後遇到*就取bc進行乘法,將結果。不需要經過後面的優先順序比較。後面同理取a與b*c的值進行+運算,再將結果入棧.
運算流程如下:
1.運算數,入棧b,c,d
2.運算子,c,d出棧,進行*運算,結果入棧
3.運算子,出棧b與c*d的值後入棧
4.運算數,入棧e,f

基本流程是這樣,
如果有不正確的歡迎修正