逆波蘭表示式 中綴表示式 字尾表示式

2021-08-10 20:16:38 字數 1065 閱讀 6351

1 .我們這裡要實現的是 將中綴表示式轉換成字尾表示式,然後再計算最終結果,參考部落格。具體轉化演算法如下:

中綴表示式a+b*c+(d*e+f)*g,其轉換成字尾表示式則為abc*+de*f+g*+。

轉換過程需要用到棧,具體過程如下:

1)如果遇到運算元,我們就直接將其輸出。

2)如果遇到操作符,則我們將其放入到棧中,遇到左括號時我們也將其放入棧中。

3)如果遇到乙個右括號,則將棧元素彈出,將彈出的操作符輸出直到遇到左括號為止。注意,左括號只彈出並不輸出。

4)如果遇到任何其他的操作符,如(「+」, 「*」,「(」)等,從棧中彈出元素直到遇到發現更低優先順序的元素(或者棧為空)為止。彈出完這些元素後,才將遇到的操作符壓入到棧中。有一點需要注意,只有在遇到" ) "的情況下我們才彈出" ( ",其他情況我們都不會彈出" ( "。

5)如果我們讀到了輸入的末尾,則將棧中所有元素依次彈出。

2.**實現如下:

/**

* @param sign 運算子

* @return int 運算子優先順序

*/public static int getrank(character sign)

return -1;

}public static void main(string args) throws exception else

if (word == '(') else

if (word == ')')

queueout.offer(top);

stacktemp.pop();

top = stacktemp.peek();

}} else else

stacktemp.push(word);}}

}while (!stacktemp.empty())

/*輸出結果*/

while (!queueout.isempty())

}

3.輸出結果即字尾表示式(逆波蘭表示式):abc*+de*f+g*+

4.計算逆波蘭表示式,得到最終運算結果,待續.

逆波蘭表示式 中綴表示式 字尾表示式

1 我們這裡要實現的是 將中綴表示式轉換成字尾表示式,然後再計算最終結果,參考部落格。具體轉化演算法如下 中綴表示式a b c d e f g,其轉換成字尾表示式則為abc de f g 轉換過程需要用到棧,具體過程如下 1 如果遇到運算元,我們就直接將其輸出。2 如果遇到操作符,則我們將其放入到棧...

字首 中綴 字尾表示式 逆波蘭表示式

遇到 運算子,因此彈出3和4 3為棧頂元素,4為次頂元素,注意與字尾表示式做比較 計算出3 4的值,得7,再將7入棧 接下來是 運算子,因此彈出7和5,計算出7 5 35,將35入棧 最後是 運算子,計算出35 6的值,即29,由此得出最終結果 從右至左掃瞄中綴表示式 遇到運算元時,將其壓入s2 遇...

中綴表示式轉字尾(逆波蘭)表示式

原則 從左到右遍歷中綴表示式 1 如果是數字則直接輸出 2 如果是左括號,直接入棧 3 如果是右括號,直接棧頂元素出棧並輸出,直到遇到左括號,左括號只出棧,不輸出 4 如果是符號,如果優先順序不高於棧頂符號則棧頂元素依次出棧並輸出 如果遇到 符號,如果棧非空並且棧頂元素不是左括號,則出棧並且輸出,否...