数据结构实验之栈二:一般算术表达式转换成后缀式
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; }