Q1:编写一个函数将一般算术表达式转化为逆波兰表达式。
假设表达式是以字符的形式由键盘输入(简单起见,设算术表达式中的参加运算的数只有一位数字)。
字符数组str:算术表达式
字符数组exp:逆波兰表达式
字符数组stack:栈
方法如下:
1,若C为数字 -> 将C依次存入数组exp中;
2,若C为左括号"(" -> 将此括号压入栈;
3,若C为右括号")" -> 将栈stack中左括号"("以前的字符依次弹出并存入数组exp中,将"("弹出;
4,若C为"+"或"-" -> 将栈stack中"("以前的所有字符号依次弹出并存入数组exp中,然后将C压入栈stack中;
5,若C为"*"或"/" -> 将当前栈stack中栈顶连续的"*"或"/"弹出并存入数组exp中,然后将C压入栈stack中;
6,若C为"#" -> 将栈所有运算符弹出并存入数组exp中,符号然后将C压入数组exp中,最后转换的逆波兰表达式在exp中.
My View:
1,波兰式:二叉树前缀表示;逆波兰式:二叉树后缀表示(在数据结构中有具体解释)
2,C的判断主要是根据符号运算的优先级,栈中弹出的都是比C优先级高或相等的.比如:C为"+",则必须弹出"+","-","*","/".
CODE:




































































































RUN:
测试数据:(1+2)*((3-4)/5)#
输出结果:12+34-5/*#
已更正错误!!!!!!!!!!!!!
闪……