数据结构--中缀转后缀

假设我们欲将中缀表达式

    a + b * c + ( d * e + f ) * g

转换成后缀表达式 。正确的答案是

   a b c * + d e * f + g * +

算法总的来说可以分为4步:
①当读到字母时,我们直接输出,当读到运算符时,我们将运算符推入栈。(当是空栈的时候)


②当读到右括号”)“,我们就将栈中的元素弹出并输出,直到我们遇到对应的左括号,但是这个左括号只被弹出,并不输出。


③当栈中有元素的时候,如果我们又遇到了运算符{ ” + “ , ” - “ ” x “ ” / “ " ( " },那么我们从栈中弹出元素并输出, 直到我们发现优先级更低的元素为止。 这里有一个例外,除非遇到 右括号“)”,否则我们绝不将 左括 号”(“弹出。

对于这个操作, ” +“ ” - “ 的优先级最低, ” x “ ” / “其次, ”(“的优先级最高 。 当我们从栈中弹出元素的任务完成的时候,我们再将遇到的运算符压入栈中。


④最后,如果我们读到输入的末尾,我们将栈中的元素依次弹出直到变为空栈,并依次输出栈中的元素。
————————————————
版权声明:本文为CSDN博主「WinJourn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chaiwenjun000/article/details/48713721

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值