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