后綴表達式怎么求前綴 前綴表達式的公式用法?
前綴表達式的公式用法?前綴表達式是一個非常有用的表達式,它將中綴表達式轉(zhuǎn)換成可以通過簡單操作得到運算結(jié)果的表達式。例如,(a,b)*(C,d)轉(zhuǎn)換成*、a、b、C、d,它的優(yōu)點是只需兩個簡單的運算,即
前綴表達式的公式用法?
前綴表達式是一個非常有用的表達式,它將中綴表達式轉(zhuǎn)換成可以通過簡單操作得到運算結(jié)果的表達式。例如,(a,b)*(C,d)轉(zhuǎn)換成*、a、b、C、d,它的優(yōu)點是只需兩個簡單的運算,即stack-in和stack-out,就可以解決任意中綴表達式的運算。其操作方式是:如果當前字符(或字符串)是數(shù)字或變量,則將其推入堆棧;如果是運算符,則堆棧頂部的兩個元素將彈出堆棧并執(zhí)行相應的操作,然后將結(jié)果推入堆棧。前綴表達式掃描完成后,堆棧中的內(nèi)容就是中綴表達式操作的最終結(jié)果。
前綴、中綴、后綴表達式是怎樣的?
(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
·如果后綴表達式未被完全讀取,則重復此操作。將中綴表達式轉(zhuǎn)換為前綴表達式的操作過程如下:首先,設置一個運算符堆棧,從右向左掃描中綴表達式。如果它是一個操作數(shù),它將直接包含在前綴表達式中。如果是操作員,則檢查探測器是否為右支架。如果它是右括號,它將直接包含在堆棧中。如果是左括號,則逐個彈出堆棧中的運算符,并包含在前綴表達式中,直到與右括號相交;如果是另一個運算符,則包含在前綴表達式中,檢測堆棧頂部運算符與當前運算符之間的優(yōu)先級關系。如果棧頂操作符的優(yōu)先級大于當前操作符的優(yōu)先級,則會彈出堆棧并將其分類為前綴表達式,直到棧頂操作符的優(yōu)先級小于或等于當前操作符的優(yōu)先級。此時,當前操作符被堆疊。掃描中綴表達式后,檢查運算符堆棧是否為空。如果不為空,則將堆棧中的運算符彈出到prefix expression中。最后翻轉(zhuǎn)前綴表達式,得到中綴表達式對應的前綴表達式
1。中綴表達式變后綴算法:遇到操作數(shù)時直接輸出。
2. 如果堆棧為空,則直接輸入運算符。
3. 遇到左括號時,將其放在堆棧上。
4. 當遇到右括號時,將執(zhí)行stack out操作,并輸出stack out元素。直到彈出堆棧的元素是左括號。
5. 遇到其他運算符時,彈出堆棧中優(yōu)先級大于或等于運算符的所有頂層元素,然后將運算符放在堆棧上。最后,堆棧中的元素依次從堆棧中取出。