中綴表示式轉化為字尾表示式
例如:1+(2-3)*4+7/5 -----> 123-4*+75/+
1)遇到數字輸出,否則進棧。
2)遇到有右括號匹配棧裡的左括號,輸出棧裡的內容
3)遇到比自己比棧裡的運算子優先順序高,入棧
4)遇到比自己比棧裡的運算子優先順序低,將棧裡的運算子出棧
1、不支援負數和大於等於2位數的計算,做到這點可以考慮用字元陣列替代string#include #include #include using namespace std;
int compare(char n_ope);
string middle_to_final(string s1);
int main(int argc,char* argv)
int compare(char n_ope)
/*轉換規則:
1.遇到數字輸出,否則進棧。
2.遇到有右括號匹配棧裡的左括號,輸出棧裡的內容
3.遇到比自己比棧裡的運算子優先順序高,入棧
4.遇到比自己比棧裡的運算子優先順序低,將棧裡的運算子出棧
*///只支援1-9的正整數,不支援2位數和負數
string middle_to_final(string s1)
//finish
if ((*it) == '(')
//finish
if ((*it) == ')')
st1.pop();
continue;
} else
st1.push(*it);
} }while (!st1.empty())
return result;
}
中綴表示式轉化為字尾表示式
注意 中綴表示式需要空格隔開運算元或者操作符 關鍵有 判斷是否操作符,操作符優先順序 public class profixexpression 計算排好的字尾操作計算式 param prostr return public static intprofixcalculate string pros...
中綴表示式轉化為字尾表示式
中綴表示式轉化為字尾表示式有兩種方法,一種是利用棧,一種是把表示式轉化為樹再進一步求解,今天我們來深入了解一下這兩種方法 給出下面乙個例子 我們把中綴表示式 9 3 1 3 10 2 轉化為字尾表示式 1.首先初始化乙個空棧,用來對符號進出棧使用 2.第乙個字元是數字9,輸出9,將後面的符號 進棧 ...
中綴表示式轉化為字尾表示式
具體操作如下 1 遇到數字,直接將其輸出。2 遇到運算子,且棧頂元素優先順序低於當前運算子優先順序,則我們將其放入到棧中,遇到左括號時我們也將其放入棧中。3 遇到運算子,且棧頂元素優先順序高於或等於當前運算子優先順序,則彈出棧中元素,直至棧空或棧頂元素優先順序低於當前運算子優先順序。再將遇到的運算子...