中缀式变后缀式
中綴式變后綴式
時間限制:1000?ms ?|? 內(nèi)存限制:65535?KB 難度:3 描述題解:簡單模擬下就行了;
代碼: #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #include<stack> using namespace std; const int MAXN=1010; char s[MAXN]; void getnum(int& i){while(isdigit(s[i])||s[i]=='.'){printf("%c",s[i++]);} } char work(char a,char b){if(a=='#')return '<';if(a=='+'||a=='-'){if(b=='*'||b=='/'||b=='(')return '<';else return '>';}if(a=='*'||a=='/'){if(b=='(')return '<';else return '>';}if(a=='('&&b==')')return '=';if(b==')')return '>';return '<'; } int main(){int T;scanf("%d",&T);while(T--){scanf("%s",s);stack<char>S;S.push('#');for(int i=0;s[i];){if(isdigit(s[i])||s[i]=='.'){getnum(i);printf(" ");}else{switch(work(S.top(),s[i])){case '<':S.push(s[i]);i++;break;case '>':printf("%c ",S.top());S.pop();break;case '=':S.pop();i++;break;}}}puts("=");}return 0; }
?
轉(zhuǎn)載于:https://www.cnblogs.com/handsomecui/p/5241797.html
總結(jié)