C++之中缀算术表达式求值算法的实现

算法思路:

使用两个栈,操作符栈optr(operator),操作数栈opnd(operand)

对中缀表达式求值的一般规则:

1. 在optr栈中压入一个’=‘

2. 从输入流获取一个字符ch

3. 取出optr的栈顶值optrTop

4. 当 optrTop != ’=‘ 或 ch != ’=‘时,循环执行一下工作,否则结束算法,此时在opnd栈的栈顶得到运算结果

while(!(optrTop!= '=' && ch  = '='))

{

        1.若ch不是操作符,读操作数operand并进opnd栈,并读入下一字符送入ch;

        2.如ch是操作符,将比较ch的优先级和optrTop的优先级:

                若optrTop<ch,则ch进optr栈,从中缀表达式取下一字符送入ch;

                若optrTopc>ch,则从opnd栈退出a2和a1,从optr栈退出σ,形成运算指令(a1)σ(a2),计算结果进入opnd栈;

        若optrTop = ch(此处特指optrTop与ch的优先级相等且ch= ')' 

        则从optr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值