感觉是一块比较偏门的东西,特此记录下:
逆波兰表达式:
或者叫后缀表达式,我们原先用的一直都是中缀表达式,但是因为如果表达式过长,计算机计算起来不方便。需要先遍历一边,找出其中的()进行优先计算,如果有多个()叠加的话就更麻烦了。于是为了计算机的方便计算,将中缀表达式转换成后缀表达式,计算机便可以使用栈的特性,来快速的计算一个表达式。至于逆波兰表达式这个名字,相传是因为这个波兰人的名字太复杂了,所以就用国籍命名了。
中缀表达式转化成为逆波兰表达式:
规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分,若是符号,则判断其与栈顶符号的优先级,是右括号或优先级不高于栈顶符号则栈顶元素依次出栈并输出,并将当前符号进栈,只到最终输出后缀表达式为止。
例如:9+(3-1)*3+10/2
1.输出9,栈:+
2.输出93,栈+(
3.输出931,栈+(-
4.输出931-,栈+
5.输出931-3,栈+*
6.输出931-3*+,栈+
7.输出931-3*+10,栈+/