利用栈完成后缀表达式的计算
后缀表达式不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:(2 + 1) * 3 , 即2 1 + 3 *。利用栈结构,将后缀表达式的结果计算出来。
输入
后缀表达式。以#号作为表达式结束标志。为了简单,处理的数据为0-9的整数。
输出
计算结果。
样例输入
3 6 6 2 / - 3 * +#
样例输出
12
#include<stdio.h>
int main()
{
int top=-1;
int a[100];
char s;
while(1)
{
scanf("%c",&s);
if(s=='#') break;
else
{
if(s>='0'&&s<='9')
{
a[++top]=s-'0';
}
else if(s=='+')
{
a[--top]+=a[top+1];
}
else if(s=='-')
{
a[--top]-=a[top+1];
}
else if(s=='*')
{
a[--top]*=a[top+1];
}
else if(s=='/')
{
a[--top]/=a[top+1];
}
}
}
printf("%d",a[top]);
}