sdut_2133_数据结构实验之栈与队列三:后缀式求值

数据结构实验之栈与队列三:后缀式求值

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic Discuss

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;
}

猜你喜欢

转载自blog.csdn.net/strongerXiao/article/details/81408766