前缀、中缀、后缀的相互转换

  前缀                 中缀                       后缀
 波兰式        通常表达方式(计算机看不懂)          逆波兰式

中缀—>后缀

方法一:

先将每一步用括号括起来,再将运算符移至括号后面,最后去掉括号。

X=A+B*(C-D)/E ——> (X=(A+((B*(C-D))/E))) ——> (X(A((B(CD)-)*E)/)+)= ——> XABCD-*E/+=

方法二:

初始化两个栈,s1存放操作数,s2存放运算符;

从表达式左边开始遍历,数字放在s1,运算符放在s2。

运算符放入s2中的规则:

如果s2为空,或者栈顶是“(”,则直接放进去;

如果当前运算符优先级大于栈顶元素优先级,则直接放入;

如果当前运’算符优先级小于栈顶元素优先级,则栈顶元素出栈,放入s1;

如果遇到“)“,运算符出栈,入s1,直到遇到”)“;

如果遇到“()”,丢掉,且把“()”之间的运算符放入s1;

s1中的元素出栈,放入s2栈;

s2出栈重新组成表达式。

中缀—>前缀

方法一:先将每一步用括号括起来,再将运算符移至括号前面,最后去掉括号。

方法二:

初始化两个栈,s1存放操作数,s2存放运算符;

从表达式右边开始遍历,数字放在s1,运算符放在s2。

运算符放入s2中的规则:

如果s2为空,或者栈顶是“)”,则直接放进去;

如果当前运算符优先级大于等于栈顶元素优先级,则直接放入;

如果当前运’算符优先级小于栈顶元素优先级,则栈顶元素出栈,放入s1;

s2中的元素出栈,放入s1栈;

s2出栈重新组成表达式。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值