資源簡介
使用逆波蘭式的方式進行表達式求值。在控制臺下可進行多組數據的輸入處理。
代碼片段和文件信息
#include?
#include?
#include?
using?namespace?std;
//比較lhs的優先級是否不高于rhs,rhs表示棧頂的符號
bool?priority(char?lhschar?rhs)
{
if?(rhs==‘(‘)
return?false;
if?(lhs==‘+‘||lhs==‘-‘)
return?true;
if?((lhs==‘*‘||lhs==‘/‘)&&(rhs==‘*‘||rhs==‘/‘))
return?true;
return?false;
}
//將中綴表達式轉換成后綴式
string?inPrefix2postPrefix(string?str)
{
string?res;//后綴表達式結果
stack?s;
for?(int?i=0;i {
//如果是數字,直接加入后綴表達式結果中
if?(isdigit(str[i]))
{
while?(i {
res+=str[i];
i++;
}
i--;//注意這里要將i減1,因為上面的循環將i多右移了一位,如果不減1,會漏掉一位
res+=“?“;
}
else?//如果是符號,需要與棧頂的元素進行比較
{
?//如果棧為空,將其直接壓入棧中;如果是左括號(,也直接將其壓入棧中
if?(s.empty()||str[i]==‘(‘)
s.push(str[i]);
else
- 上一篇:9716 矩形的并
- 下一篇:c++實現apriori算法(內附測試數據)
評論
共有 條評論