数据结构实验之栈二:一般算术表达式转换成后缀式 Description 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。 Input 输入一个算术表达式,以‘#’字符作为结束标志。 Output 输出该表达式转换所得到的后缀式。 Sample Input a*b+(c-d/e)*f# Sample Output ab*cde/-f*+ Hint #include<stdio.h> #include<ctype.h> int cpa(char ch){ switch(ch){ case '(': return 0; case '+': case '-': return 1; case '*': case '/': return 2; case ')': return 3; } } int main(){ char shi[1000], str; int front=0; while(scanf("%c", &str), str != '#') { if(isalpha(str)) printf("%c", str); else { if(front==0) shi[++front] = str; else{ if(cpa(str)==0) shi[++front] = str; else if(cpa(str)==3) { while(shi[front]!='(') { printf("%c", shi[front]); front--; } front--; } else if(cpa(str) <= cpa(shi[front]) ) { printf("%c", shi[front]); front--; shi[++front] = str; } else //其余情况为<span style="font-family: 'times new roman';">cpa(str) > cpa(shi[front])</span> shi[++front] = str; } } } while(front!=0) { printf("%c", shi[front]); front--; } printf("\n"); return 0; }