011.前缀中缀后缀表达式规则


博主的 Github 地址


1. 前缀, 中缀, 后缀表达式

1.1. 前缀表达式(波兰表达式)

1.1.1. 前缀表达式的定义
  • 前缀表达式又称波兰式, 前缀表达式的运算符位于操作数之前
  • 转换:
    表达式 (3+4)*5-6 的前缀表达式就是 - * + 3 4 5 6
1.1.2. 前缀表达式的求值步骤
  • 注意: 扫描的是前缀表达式, 因此扫描前要将原表达式进行转换
  1. 从右到左扫描表达式
  2. 遇到数字时, 将数字压入堆栈
  3. 遇到运算符时, 弹出栈顶的两个数,
    用运算符对它们做相应的计算, 并将结果入栈
  4. 重复上述过程知道表达式最左端,
    最后运算得出的值为表达式的结果
1.1.3. 前缀表达式的计算示例
  1. 表达式 (3+4)*5-6 转换成前缀表达式 - * + 3 4 5 6

  2. 从右到左扫描前缀表达式, 按顺序将 6 5 4 3 压入栈中

  3. 数字全部入栈后, 遇到 "+" 运算符, 栈中 3 和 4 出栈,
    并计算 3 + 4 的结果, 得到 7 并将其入栈.

  4. 然后下一个扫到 "*" 运算符, 栈中继续出栈 2 个元素,
    并计算 7 * 5 的结果, 得到 35 同时将其入栈.

  5. 最后扫到 "-" 运算符, 计算出 35 - 6 的结果,
    将 29 压入栈中, 得出最后结果, 并输出.


1.2. 中缀表达式

1.2.1. 中缀表达式的定义
  • 中缀表达式就是常见的运算表达式, 如表达式 (3+4)*5-6
  • 中缀表达式求值对于人类来说是最合理的, 但对于计算机并不好操作.
  • 在计算机中进行计算时, 通常都会将中缀表达式转换成其他表达式来操作,
    一般来说都是转换成后缀表达式.

1.3. 后缀表达式

1.3.1. 后缀表达式的定义
  • 后缀表达式又称逆波兰表达式, 与前缀表达式类似, 只是运算符位于操作数之后

  • 举例说明:
    表达式 (3+4)*5-6 对应的后缀表达式是 3 4 + 5 * 6 -

  • 更多的例子:

正常的表达式逆波兰表达式
a + ba b +
a + (b - c)a b c - +
a + (b - c) * da b c - d * +
a + d * (b - c)a d b c - * +
a = 1 + 3a 1 3 + =
1.3.2. 后缀表达式计算流程
  • 注意: 同样需要将中缀表达式转换后缀表达式后操作
  1. 从左到右扫描表达式
  2. 遇到数字时, 将数字压入堆栈
  3. 遇到运算符时, 弹出栈顶的两个数,
    用运算符对它们做计算, 并将结果入栈.
  4. 重复上述过程直到表达式最右端,
    最后得到的运算结果就是表达式的最终结果.
1.3.3. 后缀表达式计算实例
  1. 表达式 (3+4)*5-6 转换成后缀表达式 3 4 + 5 * 6 -
  2. 从左到右进行扫描, 将 3 4 压入栈中
  3. 遇到 "+" 运算符, 因此弹出 4 和 3,
    并计算 3 + 4 的值, 得到结果为 7 同时将其压入栈
  4. 将 5 进行入栈
  5. 然后遇到 "*" 运算符, 因此出栈 7 和 5,
    计算 7 * 5 得到结果为 35 并将其入栈
  6. 将 6 进行入栈
  7. 最后是 "-" 运算符, 计算出 35 - 6 的值,
    得到最终结果 29, 并将其入栈.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值