將乙個中綴表示式轉為乙個字尾表示式。主要思想是遍歷整個字串陣列,遇到字母直接輸出,遇到運算子則放入乙個棧中,若棧中已有元素,則再次遍歷到運算子時應該將當前運算子與棧頂元素比較,若棧頂元素優先順序高,則將棧頂元素輸出並pop掉,使當前元素繼續與新的棧頂元素進行比較。【特別需要注意的是】若當前元素與棧頂元素運算子優先順序一樣的時候,需要先將棧頂元素輸出!例:a+b-c的字尾表示式為ab+c-,而不是我之前一直以為的abc+-。注意了這個問題,這題感覺沒什麼難度了。
#include#include#includeusing namespace std;
int main() {
string s;
/*int n;
cin>>n;
while (n--) {*/
cin>>s;
int i = 0; // 計數
stackstore_string;
while (i < s.size()) {
if (s[i] >='a' && s[i]<= 'z' || s[i] >= 'a' && s[i] <= 'z') {
cout<
中綴轉字尾表示式
中綴轉字尾 進棧元素 進棧規則 若棧頂元素比目前元素的優先順序大或者相等,出棧 若棧頂元素與當前元素優先順序小,入棧 若當前元素為 入棧 若當前元素為 出棧頂元素直到遇到 位置,並且 不表達 遇到運算元直接表達 include include include define n 10 void fun...
中綴表示式轉字尾表示式
using system using system.collections.generic using system.text namespace 中綴表示式轉字尾表示式 class convert public void run top break case case while top 1 st...
中綴表示式轉字尾表示式
將乙個普通的中綴表示式轉換為字尾表示式的一般演算法是 首先需要分配2個棧,乙個作為臨時儲存運算子的棧s1 含乙個結束符號 乙個作為輸入字尾表示式的棧s2 空棧 s1棧可先放入優先順序最低的運算子 注意,中綴式應以此最低優先順序的運算子結束。可指定其他字元,不一定非 不可。從中綴式的左端開始取字元,逐...