33,311
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
void PostFix(char *f)
{ char stack[100],x; int i,k,top;
top = 0; stack[0]="#"; i = 0; k = strlen(f);
do {
x = f[i];
switch(x)
{ case ')':
while ((top>0) && (stack[top]!="("))
printf(stack[top--]);
top--; break;
case '+': '-':'*': '/': '^': '%':
while ((top>0) && (isp(stack[top])>=icp(x))
printf(stack[top--]);
stack[++top]=x; break;
default: printf(x) ;}
i=i+1;
}
while (i<=k);
while (top>=0);
printf(stack[top--]);}
int isp(char x) /* 栈内优先级 */
{
int a;
switch(x) {
case '+':a = 1; break;
case '-': a = 1; break;
case '*':
a = 2; break;
case '/':
a = 2; break;
case '%': a = 2; break;
case '^': a = 3; break;
case '(': a = 0; break;
case ')': a = 0; break;
default: a = 0; break; }
return a;}
int icp( char x) /* 栈外优先级 */
{ int a;
switch(x) {
case '+': a = 1; break;
case '-': a = 1; break;
case '*':
a = 2; break;
case '/':
a = 2; break;
case '%': a = 2; break;
case '^': a = 4; break;
case '(': a = 5; break;
case ')': a = 0; break;
default: a = 0; break; }
return a;}
int main()
{ char f[100];
printf("Please enter a char:\n");
gets(f);
PostFix(f);
return 0;
}