真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++中綴表達(dá)式怎么轉(zhuǎn)后綴表達(dá)式

這篇文章主要講解了C++中綴表達(dá)式怎么轉(zhuǎn)后綴表達(dá)式,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)與策劃設(shè)計,忠縣網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:忠縣等地區(qū)。忠縣做網(wǎng)站價格咨詢:18982081108

1、初始化兩個棧:運算符棧s1和儲存中間結(jié)果的棧s2;

2、從左至右掃描中綴表達(dá)式;

3、遇到操作數(shù)時,將其壓s2;

4、遇到運算符時,比較其與s1棧頂運算符的優(yōu)先級:

1)、如果s1為空,或棧頂運算符為左括號“(”,則直接將此運算符入棧;
2)、否則,若優(yōu)先級比棧頂運算符的高,也將運算符壓入s1
3)、否則,將s1棧頂?shù)倪\算符彈出并壓入到s2中,再次轉(zhuǎn)到(4-1)與s1中新的棧頂運算符相比較;

5、遇到括號時:

1)、如果是左括號“(”,則直接壓入s1;
2)、如果是右括號“)”,則依次彈出s1棧頂?shù)倪\算符,并壓入s2,直到遇到左括號為止,此時將這一對括號丟棄;

6、重復(fù)步驟2至5,直到表達(dá)式的最右邊;

7、將s1中剩余的運算符依次彈出并壓入s2;

8、依次彈出s2中的元素并輸出,結(jié)果的逆序即為中綴表達(dá)式對應(yīng)的后綴表達(dá)式

代碼:

#include
#include
#include 
#include
using namespace std;
 
stack s1; //運算符棧 
stack s2; //中間結(jié)果棧 
 
int f(const char str){
 int yxj; //優(yōu)先級 
 switch(str){
 case '*':yxj=5;break;
 case '/':yxj=5;break;
 case '+':yxj=4;break;
 case '-':yxj=4;break;
 }
 return yxj;
 
}
int main(){
 char c[100]="(12+4-13)+6*2";
 //char c[100]="1+((2+3)*4)-5";
 int lenc=strlen(c);
 //讀取字符串 
 for(int i=0;i='0'&&c[i]<='9'){ //如果是數(shù)字,直接壓入s2 
 s2.push(c[i]);
 }else if(c[i]=='+'||c[i]=='-'||c[i]=='*'||c[i]=='/'){ //如果是運算符 
 while(true){
 if(s1.empty()||s1.top()=='('){ //s1為空 ,或者棧頂為( 
 s1.push(c[i]);
 break;
 }else if(f(c[i])>f(s1.top())){ //當(dāng)前運算符優(yōu)先級大于s1棧頂運算符優(yōu)先級 
 s1.push(c[i]);
 break;
 }
 else{ //小于等于 
 char cc=s1.top();
 s1.pop();
 s2.push(cc);
 }
 }
 }else{
 if(c[i]=='('){ //直接讀入 
 s1.push(c[i]);
 }else{
 while(s1.top()!='('){
 char ccc=s1.top();
 s1.pop();
 s2.push(ccc);
 }
 s1.pop();
 }
 }
 }
 while(!s1.empty()){
 char cccc=s1.top();
 s2.push(cccc);
 s1.pop();
 }
 
 //while(!s2.empty()){ //結(jié)果是逆序的 
 // cout<

看完上述內(nèi)容,是不是對C++中綴表達(dá)式怎么轉(zhuǎn)后綴表達(dá)式有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站標(biāo)題:C++中綴表達(dá)式怎么轉(zhuǎn)后綴表達(dá)式
網(wǎng)站URL:http://weahome.cn/article/jedcod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部