1. 程式人生 > >字首表示式、中綴表示式、字尾表示式及其轉換

字首表示式、中綴表示式、字尾表示式及其轉換

中綴式到其他式子的轉換方法

一箇中綴表示式如: a+bc-(d+e) 第一步:按照運算子的優先順序對所有的運算單位加括號~ 式子變成拉:((a+(bc))-(d+e)) 第二步:轉換字首與字尾表示式 字首:把運算子號移動到對應的括號前面 則變成拉:-( +(a (bc)) +(de)) 把括號去掉:-+abc+de 字首式子出現 字尾:把運算子號移動到對應的括號後面 則變成拉:((a(bc)* )+ (de)+ )- 把括號去掉:abc*+de± 字尾式子出現 發現沒有,字首式,字尾式是不需要用括號來進行優先順序的確定的。

二叉樹求解法

表示式A*B:左子樹為表示式A,右子樹為表示式B,可以先求左子樹所表示的表示式的值,再求右子樹所表示的表示式的值,最後二者相乘。注意,所畫出的二叉樹,它的葉子節點為數值,非葉子節點是運算子。畫出二叉樹以後,依次進行前序遍歷和後序遍歷,可以得出字首表示式和字尾表示式。

字首、字尾表示式求值

字首:從右至左掃描表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算(棧頂元素 op 次頂元素),並將結果入棧;重複上述過程直到表示式最左端,最後運算得出的值即為表示式的結果。 字尾:從左至右掃描表示式,同上