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

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

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

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值