利用栈实现表达式求值(理论分析)

我们常见的计算表达式是中缀表达式,比如:
在这里插入图片描述
这种表达是由三个部分组成,包括:操作数、运算符、界限符。对于中缀表达式而言,界限符是必不可少的。

为了能够不用界限符就能正确表达计算顺序,前缀和后缀表达式诞生了:
在这里插入图片描述
注意它们的两个别名,“波兰表达式”(前缀表达式)和 “逆波兰表达式”(后缀表达式)。

三种表达式的运算规则:(感觉视频中表达式的顺序有点问题)
在这里插入图片描述

中缀表达式转后缀表达式手算案例:
在这里插入图片描述

注意:左操作数和右操作数的概念是主讲老师自己定义的,为了理解。包括左优先和右优先原则也是主讲老师为了便于理解自己定义的

有一种现象值得注意,同样的一个表达式,如果要按照不同的顺序计算,转成后缀表达式的结果会不同:
在这里插入图片描述
但对于机器而言,被采纳的就是左边的结果了。用主讲老师的话来说就是:
在这里插入图片描述
按照“左优先“原则,下面的表达式就被转成了这样:
在这里插入图片描述

手算后缀表达式的例子:
在这里插入图片描述
如果编程来计算后缀表达式,就能用栈来解决,之后我会用C语言来实现。大概就是这样的:
在这里插入图片描述

接下来是前缀表达式的手算方法:
在这里插入图片描述
前缀表达式在计算机中的计算也能用栈实现:
在这里插入图片描述
前缀表达式和后缀表达式的出栈顺序不同,前缀表达式中先出栈的是左操作数,而在后缀表达式中则为右操作数。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

在线沙雕

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值