卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

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

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

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

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

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

算法如下:char*rpexpression(char*e)/*返回表達式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)斷裂)推動}打破}本}個案}案例{案例}案例{案例}案例“::個案::::::::“:::個案{個案{個案=m if(m==“(”| | m==“0”)Push(s,m)Push(s,*e)}break}case”“:{Pop(s,m)while(m!=“(”{*b=m Pop(s,m)}break}默認:{*b=*e break}e}Pop(s,m)while(m!=“0”{*b=m Pop(s,m)}*b=“0”b=a return b}}