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

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

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

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

输入

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

输出

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

示例输入

59*684/-3*+#

示例输出

57

提示

基本操作数都是一位正整数!
 
   代码:
         
#include <stdio.h>  
#include <stack>  
#include <string.h>  
#include <algorithm>  
  
using namespace std;  
  
int main()  
{  
    char ch;  
    stack<int>s;  
    int dd, ff;  
    while(scanf("%c", &ch)&& ch!='#')  
    {  
        if(ch>='0' && ch<='9')  
        {  
            s.push(ch-48);  
        }  
        else  
        {  
            if(ch=='*')  
            {  
                dd=s.top();  
                s.pop();  
                ff=s.top();  
                s.pop();  
                dd=ff*dd;  
                s.push(dd);  
            }  
            if(ch=='/')  
            {  
                dd=s.top();  
                s.pop();  
                ff=s.top();  
                s.pop();  
                dd=ff/dd;  
                s.push(dd);  
            }  
            if(ch=='+')  
            {  
                dd=s.top();  
                s.pop();  
                ff=s.top();  
                s.pop();  
                dd=ff+dd;  
                s.push(dd);  
            }  
            if(ch=='-')  
            {  
                dd=s.top();  
                s.pop();  
                ff=s.top();  
                s.pop();  
                dd=ff-dd;  
                s.push(dd);  
            }  
        }  
    }  
    printf("%d
", s.top());  
    return 0;  
}  
   
 
原文地址:https://www.cnblogs.com/yspworld/p/3989113.html