计算机如何进行四则运算呢?

后缀表示法的定义

先看个例子:

9+(3-1)*3+10/2 要用后缀表示法应该是什么样子?

后缀表达式:9 3 1-3* + 10 2 / +

上面这样的表达式称为后缀表达式,叫后缀的原因在于所有的符号都是要运算数字的后面出现。显然,这里没有了括号。对于从来没有接触过后缀表达式的同学来讲,看起来很难受,但是对于计算机来说阅读起来就方便很多啦。

后缀表达式的计算结果

为了解释后缀表达式的好处,我们先来看看,计算机如何应用后缀表达式计算出最终的结果20的。
后缀表达式: 9 3 1-3* + 10 2 / +
规则:从左到右遍历表达式的每个数字和符号,遇到是数字就进栈,遇到是符号,就将处于栈顶两个数字出栈,进行运算,运算结果进栈,一直到最终获得结果。
(1)初始化一个空栈。
(2)后缀表达式中前三个都是数字,所以9\3\1进栈
(3)接下来是 - 号, 所以将栈中的1出栈作为减数,3出栈作为被减数,并运算3-1得到2再将2进栈
(4)接着将3进栈
(5)后面是 * 号,将2和3出栈相乘得到6进栈。
(6)下面是 + 号,将6和9出栈得到15进栈。
(7)接着是10和2进栈。
(8)接下来是 / 号,将栈顶的2和10出栈,10除以2得到5进栈。
(9)最后一个符号是+ 号,所以15和5出栈相加得到20进栈。
(10)将最后的结果20出栈,栈空。

  • 相信对于能看到这篇文章的同学来说这并不难理解,但是我们的后缀表达式如何得到的呢?

中缀表达式转后缀表达式

我们把平时所用的标准四则运算表达式,叫做中缀表达式,因为我们所有的运算符号都在两数字的中间。

  • 中缀转后缀表达式的规则:
    从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即称为后缀表达式的一部分,若是符号,则判断其与栈顶符号的优先级,是右括号或者优先级不高于栈顶的符号则栈顶的元素依次出栈并输出,并将当前的符号进栈,一直到最终输出后缀表达式为止。

还是以9 +(3 - 1)*3+10 / 2为例:
(1)初始化一空栈
(2)第一个字符是数字9,输出9,后面是符号 + 进栈
(3)第三个字符是( 依然是符号因为是左括号,还未配对,进栈
(4)第四个是数字3,输出,总表达式为9 3,接着是 - 号,进栈
(5)接下来是数字1,输出,总表达式为9 3 1,后面是符号 )所以符号栈,栈顶依次出栈,直到(出栈为止。所以输出 - 号,总表达式为 9 3 1 -
(6)紧接着是符号 *,因为符号栈内的 + 优先级低于 * 所以 *进栈,接着是数字 3 输出, 总表达式为 9 3 1 - 3
(7)之后的符号是 +,此时当前的栈顶元素 *,比这个 + 的优先级高,因此栈中的元素出栈并输出,总表达式为9 3 1 - 3 * +
(8)紧接着数字10,输出,总表达式为9 3 1 - 3 * + 10。后面的符号是 / ,所以 / 进栈。
(9)最后一个数字2,输出,总表达式为9 3 1 - 3 * + 10 2
(10)因为已经到最后,所以将栈中的所有符号出栈并输出,最终输出结果的后缀表达式为9 3 1 - 3 * + 10 2 / +

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MaxLoongLvs

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

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

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

打赏作者

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

抵扣说明:

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

余额充值