题目:输入一个中缀表达式,计算其结果。
输入的前提假设:
(1)只考虑+、-、*、/这四种运算符,中缀表达式中只有一种括号:();
(2)输入的中缀表达式中只有整数,没有小数;
(3)假定输入是合法的。
一、如何将中缀表达式转化为后缀表达式
在日常应用中,算术表达式中运算符总是出现在两个操作数之间,例如5*(7-23)+8/2,这种形式称为中缀表达式。计算一个中缀表达式需要知道运算符的优先级和结合性。乘除是高优先级,加减是低优先级,优先级相同时他们都是左结合的,也就是从左计算到右。有括号就要计算括号内的表达式。
中缀表达式利于人的理解,但不便于计算机的处理。因此需要将中缀表达式转换成后缀表达式,以方便计算机处理。所谓后缀表达式就是将运算符放在运算数之后。后缀表达式也称为逆波兰表达式。
比如:
中缀表达式为: 1 + ( 2 − 3 ) ∗ 4 + 4 / 2 1 + ( 2 - 3 ) * 4 + 4 / 2 1 + ( 2 − 3 ) ∗ 4 + 4 / 2
对应后缀表达式为: 1 2 3 − 4 ∗ + 4 2 / + 1 2 3 - 4 * + 4 2 / + 1 2 3 − 4 ∗ +