數(shù)據(jù)結(jié)構(gòu)中綴轉(zhuǎn)后綴 前綴、中綴、后綴表達式是怎樣的?
前綴、中綴、后綴表達式是怎樣的?(1)表達式有三種形式:中綴表達式:運算符放在兩個操作數(shù)的中間,如:(2,1)*3;后綴表達式:不含括號,運算符放在兩個操作數(shù)的后面,所有計算嚴格按照運算符出現(xiàn)的順序從
前綴、中綴、后綴表達式是怎樣的?
(1)表達式有三種形式:
中綴表達式:運算符放在兩個操作數(shù)的中間,如:(2,1)*3;
后綴表達式:不含括號,運算符放在兩個操作數(shù)的后面,所有計算嚴格按照運算符出現(xiàn)的順序從左到右進行(不考慮運算符的優(yōu)先級規(guī)則,如:21)3*;
前綴表達式:與后綴表達式相同,不包含方括號,運算符放在兩個操作數(shù)前面,如:*213。
(2)表達式計算:
由于后綴表達式中沒有括號,因此無需確定優(yōu)先級,并且計算嚴格從左到右進行,因此在計算機中計算后綴表達式比計算中綴表達式簡單得多。
中綴表達式轉(zhuǎn)換為后綴表達式的算法思想:
·讀取數(shù)字時,直接發(fā)送到輸出隊列
·讀取運算符T時,
A.在堆棧中彈出優(yōu)先級高于或等于T的所有運算符,發(fā)送到輸出隊列;
B.T將其放在堆棧上
·讀取左括號時,總是將其推入堆棧中
·讀取右括號時,將其放在靠近堆棧頂部的第一個左括號中,面操作符逐個彈出,發(fā)送到輸出隊列,然后丟棄左括號。
使用后綴表達式進行計算的具體方法如下:
·建立一個堆棧S
·從左到右讀取后綴表達式,讀取數(shù)字時將其轉(zhuǎn)換成數(shù)值并按入堆棧S,然后讀取運算符時從堆棧中依次彈出y和X兩個數(shù)字,然后以“x運算符Y”的形式計算結(jié)果,然后將其壓入堆棧S
·如果后綴表達式未被完全讀取,則重復其面過程,堆棧頂部的最終輸出值即為結(jié)束