中綴表示式轉化為字尾表示式

2021-08-18 01:44:54 字數 882 閱讀 8202

中綴表示式轉化為字尾表示式

例如:1+(2-3)*4+7/5         ----->       123-4*+75/+

1)遇到數字輸出,否則進棧。

2)遇到有右括號匹配棧裡的左括號,輸出棧裡的內容

3)遇到比自己比棧裡的運算子優先順序高,入棧

4)遇到比自己比棧裡的運算子優先順序低,將棧裡的運算子出棧

#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;

}

1、不支援負數和大於等於2位數的計算,做到這點可以考慮用字元陣列替代string

中綴表示式轉化為字尾表示式

注意 中綴表示式需要空格隔開運算元或者操作符 關鍵有 判斷是否操作符,操作符優先順序 public class profixexpression 計算排好的字尾操作計算式 param prostr return public static intprofixcalculate string pros...

中綴表示式轉化為字尾表示式

中綴表示式轉化為字尾表示式有兩種方法,一種是利用棧,一種是把表示式轉化為樹再進一步求解,今天我們來深入了解一下這兩種方法 給出下面乙個例子 我們把中綴表示式 9 3 1 3 10 2 轉化為字尾表示式 1.首先初始化乙個空棧,用來對符號進出棧使用 2.第乙個字元是數字9,輸出9,將後面的符號 進棧 ...

中綴表示式轉化為字尾表示式

具體操作如下 1 遇到數字,直接將其輸出。2 遇到運算子,且棧頂元素優先順序低於當前運算子優先順序,則我們將其放入到棧中,遇到左括號時我們也將其放入棧中。3 遇到運算子,且棧頂元素優先順序高於或等於當前運算子優先順序,則彈出棧中元素,直至棧空或棧頂元素優先順序低於當前運算子優先順序。再將遇到的運算子...