注意:中綴表示式需要空格隔開運算元或者操作符
關鍵有:判斷是否操作符,操作符優先順序
public
class
profixexpression
/** * 計算排好的字尾操作計算式
*@param prostr
*@return
*/public
static
intprofixcalculate(string prostr)else
}return st.pop();
}/** * 對合適的操作進行算術運算
*@param x 後出棧運算元
*@param y 先出棧運算元
*@param operator
*@return
*/private
static integer operate(int x, int y, string operator)
}/** * 判斷字串是否是操作符
*@param op 操作符
*@return
*/private
static
boolean
isoperator(string op)
return
false;
}/**
* 把中綴表示式轉化為字尾表示式
*@param mid
*@return
*/public
static string midtopro(string mid)elseelse
st.pop();
}else
st.push(arr[i]);
system.out.println("遇上操作符後"+st.getsize());}}
}}
while(!st.isempty())
return outstr;
}public
static
intgetprio(string op)
return
0; }
}
中綴表示式轉化為字尾表示式
中綴表示式轉化為字尾表示式有兩種方法,一種是利用棧,一種是把表示式轉化為樹再進一步求解,今天我們來深入了解一下這兩種方法 給出下面乙個例子 我們把中綴表示式 9 3 1 3 10 2 轉化為字尾表示式 1.首先初始化乙個空棧,用來對符號進出棧使用 2.第乙個字元是數字9,輸出9,將後面的符號 進棧 ...
中綴表示式轉化為字尾表示式
中綴表示式轉化為字尾表示式 例如 1 2 3 4 7 5 123 4 75 1 遇到數字輸出,否則進棧。2 遇到有右括號匹配棧裡的左括號,輸出棧裡的內容 3 遇到比自己比棧裡的運算子優先順序高,入棧 4 遇到比自己比棧裡的運算子優先順序低,將棧裡的運算子出棧 include include incl...
中綴表示式轉化為字尾表示式
具體操作如下 1 遇到數字,直接將其輸出。2 遇到運算子,且棧頂元素優先順序低於當前運算子優先順序,則我們將其放入到棧中,遇到左括號時我們也將其放入棧中。3 遇到運算子,且棧頂元素優先順序高於或等於當前運算子優先順序,則彈出棧中元素,直至棧空或棧頂元素優先順序低於當前運算子優先順序。再將遇到的運算子...