jQuery火箭图标返回顶部代码

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

 

 

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

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。

Input

输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。

Output

求该后缀式所对应的算术表达式的值,并输出之。

Sample Input

59*684/-3*+#

Sample Output

57

提示:本题熟悉了栈的原理即可做出,反向应用算术表达式转化后缀式。

代码表示如下(g++):
#include<bits/stdc++.h>

using namespace std;

int main()
{
    stack<int>t;
    int d,i;
    char a[1010];
    scanf("%s",a);
    for(i=0;a[i]!='#';i++)
    {
        if(a[i]=='+'||a[i]=='-'||a[i]=='*'||a[i]=='/')
        {
            if(a[i]=='+')
            {
                d=t.top();
                t.pop();
                d=t.top()+d;
                t.pop();
                t.push(d);
            }
            else if(a[i]=='-')
            {
                d=t.top();
                t.pop();
                d=t.top()-d;
                t.pop();
                t.push(d);
            }
            else if(a[i]=='*')
            {
                d=t.top();
                t.pop();
                d=t.top()*d;
                t.pop();
                t.push(d);
            }
            else if(a[i]=='/')
            {
                d=t.top();
                t.pop();
                d=t.top()/d;
                t.pop();
                t.push(d);
            }
        }
        else
            t.push(a[i]-'0');
    }
    printf("%d",t.top());
    return 0;
}


/***************************************************
Result: Accepted
Take time: 0ms
Take Memory: 156KB
****************************************************/

 

posted @ 2018-08-16 16:33  孑丶然  阅读(235)  评论(0)    收藏  举报
Live2D