Pro.ID1666 Title栈的应用:逆波兰表达式的计算 Title链接http://10.20.2.8/oj/exercise/problem?problem_id=1666 AC58 Submit227 Ratio25.55% 时间&空间限制描述给出一个逆波兰表达式,请计算并输出该表达式的运算结果。 #define MAX_SIZE 1000 定义栈的数据结构如下: typedef struct my_stack { 需要用到的函数原型有: void init ( Stack &st ) /// 初始化栈st bool full ( Stack &st ) /// 判断是否栈满 bool empty ( Stack &st ) /// 判断是否栈空 int push ( Stack &st , int &e ) /// e进栈 int top ( Stack &st , int &e ) /// 求栈顶元素,由参数e带回 int pop ( Stack &st , int &e ) /// 出栈,由参数e带回 /// void calculate ( Stack &st, int n, int r ) /// n转换为r进制数,结果存在栈st中 /// void output ( Stack &st ) /// 输出栈内容,即r进制整数 int calculate ( Stack &st, char rpn[ ] ) /// 利用栈 st 计算逆波兰式 rpn 当然,需要手工实现栈,否则判cheat并封号。 输入多测试用例,每个测试用例占一行,是一个字符串 str,|str| ≤ 10000 ,表示一条逆波兰表达式,最后一个字符是 '=' 。 逆波兰式仅包含 + ,-,*,/,% 五种运算。 每个操作数以及每个运算符后面,均有一个空格,作为分隔。 str中包含的计算数均为整数,计算数个数不超过1000 。除法是整数除法。 建议:读入一行字符用 getline 函数,用法: getline ( str, 10000 ); 输出Description 给出一个逆波兰表达式,请计算并输出该表达式的运算结果。 #define MAX_SIZE 1000 定义栈的数据结构如下: typedef struct my_stack { 需要用到的函数原型有: void init ( Stack &st ) /// 初始化栈st bool full ( Stack &st ) /// 判断是否栈满 bool empty ( Stack &st ) /// 判断是否栈空 int push ( Stack &st , int &e ) /// e进栈 int top ( Stack &st , int &e ) /// 求栈顶元素,由参数e带回 int pop ( Stack &st , int &e ) /// 出栈,由参数e带回 /// void calculate ( Stack &st, int n, int r ) /// n转换为r进制数,结果存在栈st中 /// void output ( Stack &st ) /// 输出栈内容,即r进制整数 int calculate ( Stack &st, char rpn[ ] ) /// 利用栈 st 计算逆波兰式 rpn 当然,需要手工实现栈,否则判cheat并封号。 Input 多测试用例,每个测试用例占一行,是一个字符串 str,|str| ≤ 10000 ,表示一条逆波兰表达式,最后一个字符是 '=' 。 逆波兰式仅包含 + ,-,*,/,% 五种运算。 每个操作数以及每个运算符后面,均有一个空格,作为分隔。 str中包含的计算数均为整数,计算数个数不超过1000 。除法是整数除法。 建议:读入一行字符用 getline 函数,用法: getline ( str, 10000 ); Output 每个测试用例输出一行结果,逆波兰式计算的结果。 Sample Input 229 239 / 260 * 278 / 200 263 % + 98 40 / + 111 - 323 + 338 154 / + = Sample Output 416 Source Author 样例输入229 239 / 260 * 278 / 200 263 % + 98 40 / + 111 - 323 + 338 154 / + = 样例输出416 提示作者 |