逆波蘭式計(jì)算過程 疑問:求表達(dá)式a b*(c-d)-e/f的波蘭式和逆波蘭式?
疑問:求表達(dá)式a b*(c-d)-e/f的波蘭式和逆波蘭式?A*b*C→**ABC A*b*C*D→**,右端是堆棧頂部]讀入(,放入堆棧,堆棧中是(,輸出:(空)讀入a,直接輸出,堆棧是(,輸出:a
疑問:求表達(dá)式a b*(c-d)-e/f的波蘭式和逆波蘭式?
A*b*C→**ABC A*b*C*D→**,右端是堆棧頂部]讀入(,放入堆棧,堆棧中是(,輸出:(空)讀入a,直接輸出,堆棧是(,輸出:a,讀入,堆棧是(,輸出:a,讀入B,直接輸出,堆棧是(,輸出:AB,讀入),依次推出堆棧中的符號(hào),直到遇到a([注意括號(hào)不是輸出],堆棧為空,輸出:AB,讀入*,堆棧為*,輸出:AB,讀入(,堆棧為*,輸出:AB,堆棧為*)讀?。ǎ湃攵褩?,堆棧為*(,輸出:AB,讀入C,直接輸出,堆棧為*(,輸出:AB,C,讀入-,放入堆棧,堆棧為*(-),輸出:AB,C,讀入D,直接輸出,堆棧為*(-,輸出:AB,CD,讀入)。依次推出堆棧中的符號(hào),直到遇到a([注意括號(hào)不輸出]、堆棧為*(,輸出:AB,CD)-讀入*、放入堆棧、堆棧中為*(*)、輸出:AB CD讀入E、直接輸出、堆棧中為*(*)、輸出:AB CD-E讀入,[此時(shí)堆棧中*的優(yōu)先級(jí)高于堆棧中*的優(yōu)先級(jí),所以*先取出,然后放在堆棧上],堆棧中是*(,輸出:ab CD-E*讀入F,直接輸出,堆棧中是*(,輸出:ab CD-E*F)讀入),依次推出堆棧中的符號(hào),直到遇到一個(gè)為止([注意括號(hào)沒有輸出],堆棧是*,輸出:abcd-E*F此時(shí),讀入完成,還有一個(gè)*在堆棧中,輸出:abcd-e*f*完成!以上是從中綴表達(dá)式到后綴表達(dá)式的全過程,并寫出了棧的變化。
什么是三元式,四元式,逆波蘭式?
1)三元表達(dá)式和語句表示為一組三元表達(dá)式。每個(gè)三元表達(dá)式由OP、arg1、2arg2組成,例如(OP、arg1、arg2)。例如:A:=b*cb*D(1)(*b,c)(2)(*b,D)(3)((1),(2))(4)(:=(3),A)2)四元數(shù)是更常見的中間碼形式。與三元數(shù)相比,四元數(shù)多了一個(gè)結(jié)果,如(OP,arg1,arg2,result)。OP和arg1之間有一個(gè)逗號(hào)。如果arg是默認(rèn)值,請(qǐng)使用-occulation。例如:A:=b*C,b*D(1)(*,b,C,T1)(2)(*,b,D,T2)(3)(,T1,T2,T3)(4)(:=,T3,-,A)3)逆波蘭表達(dá)式是中間代碼表達(dá)式的最簡單形式。將操作對(duì)象寫在前面,操作符號(hào)寫在后面,例如a B寫為ab。實(shí)現(xiàn)方法:棧壓,碰到操作對(duì)象,棧壓,碰到操作符,在棧頂取兩個(gè)操作,然后棧壓。示例:a b*C->abc*(a b)*C->abc*