棧的后綴表達式 前綴、中綴、后綴表達式是怎樣的?
前綴、中綴、后綴表達式是怎樣的?(1)表達式有三種形式:中綴表達式:運算符放在兩個操作數(shù)的中間,如:(2,1)*3;后綴表達式:不含括號,運算符放在兩個操作數(shù)的后面,所有計算嚴(yán)格按照運算符出現(xiàn)的順序從
前綴、中綴、后綴表達式是怎樣的?
(1)表達式有三種形式:
中綴表達式:運算符放在兩個操作數(shù)的中間,如:(2,1)*3;
后綴表達式:不含括號,運算符放在兩個操作數(shù)的后面,所有計算嚴(yán)格按照運算符出現(xiàn)的順序從左到右進行(不考慮運算符的優(yōu)先級規(guī)則,如:21)3*;
前綴表達式:與后綴表達式相同,不包含方括號,運算符放在兩個操作數(shù)前面,如:*213。
(2)表達式計算:
由于后綴表達式中沒有括號,因此無需確定優(yōu)先級,并且計算嚴(yán)格從左到右進行,因此在計算機中計算后綴表達式比計算中綴表達式簡單得多。
中綴表達式轉(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
·如果后綴表達式?jīng)]有被完全讀取,則重復(fù)其面過程,堆棧頂部的最終輸出值為end
1。中綴表達式變量后綴算法:遇到操作數(shù)時直接輸出。
2. 如果堆棧為空,則直接輸入運算符。
3. 遇到左括號時,將其放在堆棧上。
4. 當(dāng)遇到右括號時,將執(zhí)行stack out操作,并輸出stack out元素。直到彈出堆棧的元素是左括號。
5. 遇到其他運算符時,彈出堆棧中優(yōu)先級大于或等于運算符的所有頂層元素,然后將運算符放在堆棧上。最后,堆棧中的元素依次從堆棧中取出。
前綴中綴后綴表達式的轉(zhuǎn)換,能幫一下嗎?
#包括使用命名空間STD bool等運算符(char CH){char OPS[]=“-*/”for(int i=0,i)]中綴表達式轉(zhuǎn)換為后綴表達式和求值算法:中綴表達式轉(zhuǎn)換為后綴表達式方法:
1。遇到的操作數(shù):直接輸出(添加到后綴表達式)
2。當(dāng)堆棧為空時,遇到運算符,直接進入堆棧
3。遇到左括號:放在堆棧上
4。遇到右括號:執(zhí)行stack out操作,將元素從堆棧中輸出,直到