数据结构实验之栈与队列三:后缀式求值
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
Input
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
Output
求该后缀式所对应的算术表达式的值,并输出之。
Sample Input
59*684/-3*+#
Sample Output
57
Hint
基本操作数都是一位正整数!
Source
每两个数之间都会有一个运算符。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
char s[100005];
int main()
{
int top;
char st;
top = 0;
int sum = 0;
while(scanf("%c", &st))
{
if(st == '#')
break;
else if(st >= '0' && st <= '9')
s[++top] = st - '0';
else
{
switch(st)
{
case '+': sum = s[top - 1] + s[top]; s[--top] = sum; break;
case '-': sum = s[top - 1] - s[top]; s[--top] = sum; break;
case '*': sum = s[top - 1] * s[top]; s[--top] = sum; break;
case '/': sum = s[top - 1] / s[top]; s[--top] = sum; break;
}
}
}
printf("%d\n", sum);
return 0;
}