问题 7070 --生成逆波兰表达式

7070: 生成逆波兰表达式★★★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 139  解决: 77
[提交][状态][命题人:]

题目描述

为四则运算式如“6+(8-2)*2/3”转后缀表达式“6 8 2 - 2 * 3 / +”设计算法,并用程序实现。
   建议:可以设计一个“+-/*”符号栈,用来存储运算符号。从左往右扫描四则运算式。
   (1)遇到数字时,直接输出;
   (2)遇到“+-/*”运算符号时,根据运算符号的优先级设计入栈与出栈。运算符的入栈出栈参考如下规则:
     ①若栈为空或者栈顶运算符号为“(”时,入栈。
     ②若栈非空,则与栈顶的运算符号的优先级进行比较。
       若当前运算符的优先级大于栈顶元素的优先级,则入栈,
       否则栈顶元素依次出栈并输出,直至栈顶元素的优先级小于当前运算符的优先级。并将当前运算符入栈。
   (3)遇到左括号“(”时,入栈;
   (4)遇到右括号“)”时,则栈顶元素依次出栈并输出,直至遇到左括号。括号不输出,其他元素依次输出。

输入

输出

样例输入
Copy
6 + ( 8 - 2 ) * 2 / 3
样例输出
Copy
6 8 2 - 2 * 3 / +

提示

来源

[提交][状态]