1. 程式人生 > >資料結構實驗之棧三:字尾式求值 SDUT 2133

資料結構實驗之棧三:字尾式求值 SDUT 2133

題目描述

對於一個基於二元運算子的字尾表示式(基本運算元都是一位正整數),求其代表的算術表示式的值。

輸入

輸入一個算術表示式的字尾式字串,以‘#’作為結束標誌。

輸出

求該字尾式所對應的算術表示式的值,並輸出之。

示例輸入

59*684/-3*+#

示例輸出

57

提示

基本運算元都是一位正整數!

運用棧的思想很簡單

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>

using namespace std;
int main()
{
    char c;
    int num[100100];
    int j=0;
    while(~scanf("%c",&c),c!='#')
    {
        if(c>='0'&&c<='9')
        {
            num[j++]=c-'0';
        }
        else
        {
        int p,k1,k2;
            if(num[j-1]>num[j-2])
            {
                k1=num[j-1];
                k2=num[j-2];
            }
            else
            {
                k1=num[j-2];
                k2=num[j-1];
            }

            if(c=='*')
            {
                p=k1*k2;
            }
            if(c=='-')
            {
                p=k1-k2;
            }
            if(c=='+')
            {
                p=k1+k2;
            }
            if(c=='/')
            {
                p=k1/k2;
            }
            j=j-2;
            num[j++]=p;
        }
    }
   printf("%d\n",num[0]);
    return 0;
}