中缀表达式转换后缀表达式

思想:

1:当输入的是运算符时

    a:循环,当(栈非空and 栈顶不是开括号and栈顶运算符优先级大于等于输入的运算符优先级)时,反复操作:把栈顶元素弹出,放到后缀表达式中

b:把输入的预算符压栈

2:最后,当中缀表达式的符号序列全部读入时,若栈内仍有元素,把他们全部依次弹出,都放到后缀表达式尾部。若弹出的元素遇到开阔号时,则 说明括号不匹配,做错误处理,清栈退出。


例子:中缀表达式4*x+(2*x-a)*c=?

1从左向右按照算法思想:4写在外边*是预算符入栈,x放外边,此时遇到+号运算符,因为*大于+优先级,所以*出栈放到后缀表达式中+入栈,此时后缀表达式为:4x*

2遇到(入栈此时栈中为:+(,2写到后缀中,因为栈顶是(所以x入栈,此时栈中:+(*,x放入后缀表达式中,此时后最表达式为4x*2x

3因为栈顶*优先级高于-所以*出盏,-入栈,栈内变为+(-,后缀表达式变为4x*2x*a,接下来遇到了),于是把栈中(之后的元素依次拿出放入后缀表达式中,此时栈中变为+,后缀表达式变为:4x*2x*a-,有因为栈顶+优先级小于*所以*入栈,栈中为+*,后缀表达式变为4x*2x*a-c,遇到终止符号=,全部出盏,后缀表达式最终为4x*2x*a-c*+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值