轉化為字尾:從左到右遍歷中綴表示式,遇到運算元,輸出,遇到操作符,當前操作符的優先順序大於棧頂操作符優先順序,進棧,否則,彈出棧頂優先順序大於等於當前操作符的操作符,當前操作符進棧。
轉化為字首:從右到左遍歷中綴表示式,遇到運算元,輸出,遇到操作符,當前操作符的優先順序大於等於棧頂操作符優先順序,進棧,否則,彈出棧頂優先順序大於當前操作符的操作符,當前操作符進棧。--參考
該**以上方法需要先定義操作符優先順序,當然,可以定義。但是這樣會麻煩許多,那麼不如用括號來進行進行限定。這樣就不需要寫判斷優先順序函式了。
'(','+','-','*','/'入棧
')'輸出棧中到'('的元素
其他字元直接輸出
附**:
void intopast(char* str) //中綴到字尾
}cout << endl;
}
')','+','-','*','/'入棧
'('儲存棧中到')'的元素
其他字元直接儲存
將儲存的字串逆序輸出就是字首表示式
附**:
void intoprev(char* str) //中綴到字首
}//將儲存的字串逆序輸出就是字首表示式
for(int i = num - 1; i >= 0; i--)
cout << res[i];
cout << endl;
}
#include #include using namespace std;
int const max_length = 100;
typedef struct
stacks; //棧結構定義
stacks stacks[max_length]; //棧
void intopast(char* str) //中綴到字尾
}cout << endl;
}void intoprev(char* str) //中綴到字首
}//將儲存的字串逆序輸出就是字首表示式
for(int i = num - 1; i >= 0; i--)
cout << res[i];
cout << endl;
}int main()
中綴表示式 字首表示式 字尾表示式
中綴表示式 中綴記法 中綴表示式是一種通用的算術或邏輯公式表示方法,操作符以中綴形式處於運算元的中間。中綴表示式是人們常用的算術表示方法。雖然人的大腦很容易理解與分析中綴表示式,但對計算機來說中綴表示式卻是很複雜的,因此計算表示式的值時,通常需要先將中綴表示式轉換為字首或字尾表示式,然後再進行求值。...
中綴表示式 字尾表示式 字首表示式
正如我們常常潛意識認為我們所說的數字都是十進位制,對於數字的其他進製感覺不正確一樣,其實只是我們不熟悉而已,其他進製其實也不過就是一種對資料的表達方式而已。對於我們的表示式也是一樣。eg 表示式2 3 5 7 我們上面所看到的也就是我們平時常用的書寫表示式的方式就是我們所謂的 中綴表示式 字首表示式...
字首表示式 中綴表示式 字尾表示式。
表示式 就是式子。是由數字 算符 數字分組符號 自由量和約束量組成的。人們一般習慣寫出來的式子,叫做中綴表示式。因為在計算機中,不方便表達 數字分組符號。所以 波蘭人發明了一種把去符號化的表示式。字首表示式 字首表示式 沒有括號,算符在前 數字在後。波蘭數學家發明,為了紀念,又叫做波蘭式。跟其對應,...