是什麼?由數字和運算子組成的式子。簡單清楚的描述計算過程和內容。
算術表示式分為:字首表示式、中綴表示式、字尾表示式;中綴表示式符合人類的日常思維習慣。
採用樹的資料結構,缺點是如果表示式過於複雜,樹的高度會很高,極大的增加了時間複雜度和空間複雜度,但是轉換成線性結構,效率將會提高很多,所以需要將中綴表示式先轉換成字首或字尾。依靠棧來進行計算。
這裡用棧的資料結構實現算術表示式(簡單起見,這裡定義的是未省略括號的算術表示式,支援+、-、*、/)。
e.w.dijkstra在20世紀60年代發明了乙個簡單演算法,用兩個棧(乙個用於儲存運算子,乙個用於儲存運算元)完成了這個任務。表示式由括號、運算子和運算元組成,根據以下4種情況從左到右逐個將這些實體送入棧處理:
1.將運算元壓入運算元棧;
2.將運算子壓入運算子棧;
3.忽略左括號;
4.在遇到右括號時,彈出乙個運算子,彈出所需數量的運算元,並將運算子和運算元的運算結果壓入運算元棧。
在處理完最後乙個右括號之後,運算元棧上只會有乙個值,即表示式的值。
將中綴表示式轉換為字首表示式
將中綴表示式轉換為字首表示式 遵循以下步驟 1 初始化兩個棧 運算子棧 s1和儲存中間結果的棧s2 2 從右至左掃瞄中綴表示式 3 遇到運算元時,將其壓入s2 4 遇到運算子時,比較其與 s1棧頂運算子的優先順序 4 1 如果 s1為空,或棧頂運算子為右括號 則直接將此運算子入棧 4 2 否則,若優...
表示式轉換 中綴表示式轉換為字尾表示式
算術表示式有字首表示法 中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。輸入格式 輸入在一行中給出不含空格的中綴表示式,可包含 以及左右括號 表示式不超過20個字元。輸出格式 在一行中輸出轉換後的字尾表示式,...
Python將中綴表示式轉換為字尾表示式
遵循以下步驟 1 初始化兩個棧 運算子棧s1和儲存中間結果的棧s2 2 從左至右掃瞄中綴表示式 3 遇到運算元時,將其壓入s2 4 遇到運算子時,比較其與s1棧頂運算子的優先順序 4 1 如果s1為空,或棧頂運算子為左括號 則直接將此運算子入棧 4 2 否則,若優先順序比棧頂運算子的高,也將運算子壓...