1. 程式人生 > >C# 堆疊例子--中綴表示式轉為字尾表示式

C# 堆疊例子--中綴表示式轉為字尾表示式

中綴表示式是什麼?

中綴表示式是一個通用的算術或邏輯公式表示方法,其表示式中操作符處於運算元的中間。例如表示式:(3+67)×5 , x&&(y|c)

中綴表示式不容易被電腦解析,但仍被許多程式語言使用,因為它符合人們的普遍用法。

字尾表示式是什麼?

不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行(不再考慮運算子的優先規則,如:2 1 + 5 *,  即(2 + 1) * 5

字尾表示式優點是能夠很容易被計算機所解析。 如上面的字尾表示式:2 1 + 5 *,  其中綴為 (2 + 1) * 5,

解析過程:

依次讀取: 2 1 + 5 *

1.碰到數字就壓入堆疊,如: 2,1 壓入棧

2.碰到操作符就取出棧頂兩個數操作,如:碰到了操作符‘+’  取出棧頂兩個2 ,1  進行1+2=3

3.兩個數操作結果再壓壓入堆疊 如:將3壓入棧。

4.重複第1步,將5壓入棧,

5.重複第2步,取出棧內 3,5 進行 3*5=15 (切記:top-2 操作符 top-1 = 結果)

最後結果:15

程式碼實現: