表达式求值

在这里插入图片描述
中缀表达式有俩个栈,一个操作数,一个操作数
步骤是:
  1⃣️遇到数字就将数字放入数字栈中
  2⃣️遇到字符串就要分开考虑
    1、是‘(’就直接入栈,方便遇到’)‘时,就将’('以后所有的运算栈带入数字栈运算,结果保存于数字串
    2、如果操作栈为空栈直接入栈
    3、如果操作栈的栈顶元素优先级小于带输入字符的优先级直接入栈
    4、其他情况就是要将数字栈与操作栈结合,算出结果保存在数字栈中
    5、数字栈中的最后一个元素即为题解

中缀转后缀

1、任何中缀表达式都由运算数,运算符,括号(大,中,小),这三部分组成。

2、从中缀表达式的左边开始扫描(脑中自己想像的),若遇到运算数时,则直接将其输出(不压入堆栈)。

3、若遇到左括号,则将其压栈。

4、若遇到右括号,表达括号内的中缀表达式已经扫描完毕。这时需将栈顶的运算符依次弹出并输出,直至遇到左括号[左括号弹出但不输出]。

5、若遇到的是运算符:
a、如果该运算符的优先级大于栈顶运算符的优先级时,将其压栈

b、如果该运算符的优先级小于栈顶运算符的优先级时,将栈顶运算符弹出并输出,接着和新的栈顶运算 符比较,若大于,则将其压栈,若小于,继续将栈顶运算符弹出并输出…(一直递归下去,直至运算符大于栈顶云算符为止)。

6、最后一步,若扫描到中缀表达式的末尾[即扫描结束],若堆栈中还有存留的运算符依次弹出并输出即可。
中缀转后缀结束后,如何计算呢:
遇到数字直接压栈,遇到计算符,从栈顶pop俩个元素进行计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值