数据结构中的前缀表达式和后缀表达式


书写算术表达式的表达方式称为记法。算术表达式可以用三种不同但等效的记法来编写,即不改变表达式的本质或输出。这些记法是:

  • 中缀表达式

  • 前缀表达式

  • 后缀表达式

中缀记法是我们编写不同数学表达式时使用的普通记法。前缀和后缀记法则有所不同。

前缀记法

在这种记法中,运算符位于操作数**之前**,即运算符写在操作数前面。例如,**+ab**。这相当于其中缀记法**a + b**。前缀记法也称为**波兰表示法**。

后缀记法

这种记法风格称为**逆波兰表示法**。在这种记法风格中,运算符位于操作数**之后**,即运算符写在操作数之后。例如,**ab+**。这相当于其中缀记法**a + b**。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

示例

表达式编号中缀记法前缀记法后缀记法
1a + b+ a ba b +
2(a + b) * c* + a b ca b + c *
3a * (b + c)* a + b ca b c + *
4a / b + c / d+ / a b / c da b / c d / +
5(a + b) * (c + d)* + a b + c da b + c d + *
6((a + b) * c) - d- * + a b c da b + c * d -

表达式解析

正如我们所讨论的,设计算法或程序来解析中缀记法并不是一种非常有效的方法。相反,这些中缀记法首先被转换为后缀或前缀记法,然后再计算。

要解析任何算术表达式,我们还需要考虑运算符的优先级和结合性。

优先级

当一个操作数位于两个不同的运算符之间时,哪个运算符首先获取操作数由运算符对其他运算符的优先级决定。例如:

𝑎 + 𝑏 ∗ 𝑐 → 𝑎 + (𝑏 ∗ 𝑐)

由于乘法运算优先于加法运算,因此将首先计算 b * c。稍后将提供运算符优先级表。

更新于:2020年8月11日

29K+ 浏览量

开启您的职业生涯

通过完成课程获得认证

开始学习
广告