基于棧的中綴算術表達式求值 中綴表達式轉換為前綴及后綴表達式并求值c ?
中綴表達式轉換為前綴及后綴表達式并求值c ?#Include使用命名空間STD bool isoperator(char CH){char OPS[]=“-*/”for(int i=0,i)]中綴表
中綴表達式轉換為前綴及后綴表達式并求值c ?
#Include使用命名空間STD bool isoperator(char CH){char OPS[]=“-*/”for(int i=0,i)]中綴表達式轉換為后綴表達式和求值算法:中綴表達式轉換為后綴表達式方法:
1。遇到的操作數(shù):直接輸出(添加到后綴表達式)
2。當堆棧為空時,遇到運算符,直接進入堆棧
3。遇到左括號:放在堆棧上
后綴表達式求值算法?
1來計算后綴表達式。將中綴表達式轉換為等價的后綴表達式后,不需要考慮運算符的優(yōu)先級,只需從左到右掃描后綴表達式即可。具體求值步驟如下:從左到右掃描后綴表達式,取出表達式中運算符的前兩個操作數(shù),遇到運算符時進行運算,然后將結果帶回后綴表達式;繼續(xù)掃描,直到后綴表達式的最后一個表達式。例如,計算后綴表達式(ABC*def*/-)的算法是設置堆棧。開始時,堆棧為空,然后從左到右掃描后綴表達式。如果遇到運算符,它將進入堆棧。如果遇到運算符,它將從堆棧中退出兩個元素,首先退出的元素將放在運算符的右側,然后退出將其放在運算符的左側,然后將結果放在堆棧中,直到掃描后綴表達式。此時,堆棧中只有一個元素,這是操作的結果。例如,找到后綴表達式的值:128 2-74-/*堆棧的變化如下: