成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

表達(dá)式轉(zhuǎn)換成逆波蘭式 一般算術(shù)表達(dá)式轉(zhuǎn)化為逆波蘭式?

一般算術(shù)表達(dá)式轉(zhuǎn)化為逆波蘭式?表達(dá)式e后綴形式的定義:(1)如果e是變量或常量,則e的后綴形式為e本身;(2)如果e是E1*E2的形式(其中*表示任何二進(jìn)制運(yùn)算),則e的后綴形式為e“1 e”2*,e

一般算術(shù)表達(dá)式轉(zhuǎn)化為逆波蘭式?

表達(dá)式e后綴形式的定義:(1)如果e是變量或常量,則e的后綴形式為e本身;(2)如果e是E1*E2的形式(其中*表示任何二進(jìn)制運(yùn)算),則e的后綴形式為e“1 e”2*,e“1和e”2分別為E1和E2的后綴表達(dá)式;(3) 如果e是(E1)形式的表達(dá)式,那么e的后綴表達(dá)式就是E1的后綴表達(dá)式。所以波蘭語表達(dá)式的倒裝與運(yùn)算符的優(yōu)先級(jí)無關(guān)。具體算法比較困難,要使用DAG圖或三元圖,這是編譯原理中使用較多的。根據(jù)逆波蘭表達(dá)式計(jì)算相對(duì)簡(jiǎn)單。堆棧用于依次將字符串讀入堆棧。遇到運(yùn)算符時(shí),將堆棧頂部的兩個(gè)元素取出進(jìn)行操作,并將操作結(jié)果推入堆棧,直到讀取整個(gè)字符。

假設(shè)表達(dá)式由單字母變量和雙目四則運(yùn)算符構(gòu)成。寫一個(gè)算法,把一個(gè)表達(dá)式轉(zhuǎn)換為逆波蘭式?

算法如下:char*rpexpression(char*e)/*返回表達(dá)式e*/{char M=“0”char*B stack s static char a[100]B=a initstack(s)push(s,M)if(*e){while(*e){switch(*e){case”(“:{push(s),*e)break}case“:case”-“:{M=top(s)if(M=”| M=“-”){pop(s,M)*b=M}else if(M==”*“| M==”/”){pop(s,M)while(M!=“(”&&;amp;amp;amp;amp;amp!“0 ”0{0 {0 {0 {0{0{0 {0{”0{0{0{0}{0}{b=m Pop(s、m)b=m Pop(s、m)b=m Pop(s、m)}[u)如果(m)假如(m)假如(m===“0”推(s、m)推(s、s、e)斷裂)推動(dòng)}打破}本}個(gè)案}案例{案例}案例{案例}案例“::個(gè)案::::::::“:::個(gè)案{個(gè)案{個(gè)案=m if(m==“(”| | m==“0”)Push(s,m)Push(s,*e)}break}case”“:{Pop(s,m)while(m!=“(”{*b=m Pop(s,m)}break}默認(rèn):{*b=*e break}e}Pop(s,m)while(m!=“0”{*b=m Pop(s,m)}*b=“0”b=a return b}}