我们常见的计算表达式是中缀表达式,比如:
这种表达是由三个部分组成,包括:操作数、运算符、界限符。对于中缀表达式而言,界限符是必不可少的。
为了能够不用界限符就能正确表达计算顺序,前缀和后缀表达式诞生了:
注意它们的两个别名,“波兰表达式”(前缀表达式)和 “逆波兰表达式”(后缀表达式)。
三种表达式的运算规则:(感觉视频中表达式的顺序有点问题)
中缀表达式转后缀表达式手算案例:
注意:左操作数和右操作数的概念是主讲老师自己定义的,为了理解。包括左优先和右优先原则也是主讲老师为了便于理解自己定义的
有一种现象值得注意,同样的一个表达式,如果要按照不同的顺序计算,转成后缀表达式的结果会不同:
但对于机器而言,被采纳的就是左边的结果了。用主讲老师的话来说就是:
按照“左优先“原则,下面的表达式就被转成了这样:
手算后缀表达式的例子:
如果编程来计算后缀表达式,就能用栈来解决,之后我会用C语言来实现。大概就是这样的:
接下来是前缀表达式的手算方法:
前缀表达式在计算机中的计算也能用栈实现:
前缀表达式和后缀表达式的出栈顺序不同,前缀表达式中先出栈的是左操作数,而在后缀表达式中则为右操作数。