我們熟悉的表達式如a+b、a+b*(c+d)等都屬於中綴表達式。中綴表達式就是(對於雙目運算符來說)操作符在兩個操作數中間:num1 operand num2。同理,後綴表達式就是操作符在兩個操作數之後:num1 num2 operand。ACM隊的“C小加”正在郁悶怎樣把一個中綴表達式轉換為後綴表達式,現在請你設計一個程序,幫助C小加把中綴表達式轉換成後綴表達式。為簡化問題,操作數均為個位數,操作符只有+-*/ 和小括號。
輸入第一行輸入T,表示有T組測試數據(T<10)。21+2(1+2)*3+4*5樣例輸出
12+12+3*45*+
代碼
#include#include #define max 1000 int main(void) { int n,i,t,s; char a[max],ch[max]; scanf("%d",&n); while(n--) { s=-1; t=0; char str[max]; scanf("%s",str); for(i=0;i ='0'&&str[i]<='9') { ch[t++]=str[i]; } else if(str[i]=='(') { a[++s]=str[i]; } else if(str[i]==')') { while(s>=0&&a[s]!='(') { ch[t++]=a[s--]; } s--; } else if(str[i]=='+'||str[i]=='-') { while(s>=0&&a[s]!='(') { ch[t++]=a[s--]; } a[++s]=str[i]; } else { while(a[s]=='*'||a[s]=='/') { ch[t++]=a[s--]; } a[++s]=str[i]; } } while(s>=0) { ch[t++]=a[s--]; } ch[t]='\0'; printf("%s\n",ch); } return 0; }