前缀表达式也称为波兰表达式,前缀表达式的运算符位于操作数之前 如 ( 3 + 4 ) * 5 - 6
对应的前缀表达式为 - * + 3 4 5 6
从右至左扫描表达式,遇到数值时,将数字压入栈中,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算,并将结果入栈,重复执行 ,最后留在栈里的元素即为结果
如 (3 + 4 )5 - 6 的前缀表达式为 ` -+ 3 4 5 61.从右至左扫描,将 6、5、4、3压入栈 2.遇到 + 运算符时,弹出3和4计算出3+4=7,再将7入栈 3.接下来是
*运算符,弹出7和5,计算得出35,再次入栈 4.最后是
-`运算符,计算出35-6即位29,此时29即为最终结果
中缀表达式,即为我们平常看到的表达式,人理解起来很容易
如
( 3 + 4 ) * 5 - 6
中缀表达式计算机理解起来困难
如 完成一个中缀表达式的计算(https://www.zihanzy.com/articles/327)
为了方便,一般我们要将中缀表达式,转换为前缀或后缀表达式在给计算机进行运算。 如 完成一个后缀表达式的计算 (https://www.zihanzy.com/articles/331 )
后缀表达式也称为逆波兰表达式与前缀表达式相似,只是运算符位于操作数之后
如 ( 3 + 4 ) * 5 - 6
对应的后缀表达式为 3 4 + 5 * 6 -
如
a + b
= a b +
a+(b-c)
= a b c - +
a + (b - c) * d
= a b c - d *
从左至右扫描表达式,遇到数值时,将数字压入栈中,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算,并将结果入栈,重复执行 ,最后留在栈里的元素即为结果
如 (3 + 4 ) 5 - 6 的前缀表达式为 ` 3 4 + 5 6 - 1.从左至右扫描,将3 4 压入栈 2.遇到 + 运算符时,弹出4和3计算出3+4=7,再将7入栈 3.接下来是
*运算符,弹出5和7,计算得出35,再次入栈 4.最后是
-`运算符,计算出35-6即位29,此时29即为最终结果