前、中、后缀表达式解析与转换

本文介绍了前缀和后缀表达式的概念,阐述了运算符优先级及计算方法,包括转换两种方式:加括号再去括号和先排列数再求符号,并通过实例详细解读了计算机如何处理这两种表达式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前、中、后缀表达式

我们常见的表达式都是中缀表达式,比如1+35-3(5-8)。可是它对计算机并不友好。计算机采用堆来计算表达式,于是有了前缀和后缀表达式。为了更好地理解它们,我们先来看看运算符及其优先性。 运算符优先级有15级,从1-15逐级降低。优先级相同时根据其结合性计算。在这里插入图片描述
我们看看计算机如何计算前缀表达式的。
从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇
到运算符,弹出栈顶的两个数,用运算符对它们做相应的计算,
并将结果入栈,重复上述过程直到表达式最左端,最后运算得
出的值即为表达式的结果。
后缀表达式与此相反,这里不再赘述。
转换方法1:先加括号,再去括号。
例如a+bc+(de+f)g
(1)先按照运算符的优先级对中缀表达式加括号,变成
((a+(b
c))+(((d*e)+f)g))
(2)自内到外将运算符移到括号的前面,然后去括号,变成
a:去掉第一层括号
((a+*bc+(*de+f)*g))
b:去掉第二层括号
((a+*bc+(+*def*g))
c:去掉第三层括号
(a+*bc*+(+*defg))
d:去掉第四层括号
++a*bc*+*defg
转换方法2:先排列数,再求符号
(1)把运算数按原顺序排列起来,变成
a b c d e f g
(2)先算d
e,故a b c *de f g
(3)再算括号里面,故a b c +*def g
(4)计算所有乘号内容:a*bc*+*defg
(5)对整个式子求和:++a*bc*+*defg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量子代码时空

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值