数据结构中后缀表达式的求解,以及中缀与后缀的转化过程

表达式的求解是程序中的一个最基本的问题(王道说的)。他实际是一个栈的典型应用。其中,中缀表达式不仅仅注意的事运算的优先级,还有括号。而后缀表达式的运算符在操作数的后面,在后缀表达式中已考虑了运算符的优先级,没有括号,只有操作数和运算符。如:

中缀表达式:A+B*(C-D)-E/F

后缀表达式:ABCD-*+EF/-

按照标题来,先进性后缀表达式的求值(使用上式中的表达式)。

一、后缀表达式的求解

1、遍历表达式。遇到操作数的时候,我们进行入栈操作。即ABCD进行入栈操作。此时栈如下图所示:

 

D
C
B
A

2、接着遍历到“-”,DC进行退栈,计算C-D的值,得到结果后,再将C-D的结果压栈,此时的栈内如图所示:

C-D
B
A

3、继续遍历,到 “*” , C-D退栈,B退栈,计算(C-D)*B ,得到结果,在压入栈,此时栈如图所示:

(C-D)*B
A

4、继续遍历,到 “+ ” ,(C-D)*B 退栈,A退栈,计算A+(C-D)*B的值,再将结果进行压栈进去,此时栈内元素:

 
A+(C-D)*B

5、继续遍历,遇到操作数 EF,进行入栈,此时栈内元素如下:

 

 
F
E
A+(C-D)*B

6、继续遍历 , 到 “/” ,E,F退栈,计算E/F,再将E/F结果进行入栈,栈内元素如下所示:

 
E\F
A+(C-D)*B

7、最后, - 也是操作符,出栈,有:A+(C-D)*B - E\F 。

到此为止了,留着自己以后慢慢看。忘了就可以来看看。

这就是后缀的表达式的求解过程。关于中缀到后缀的转化,这个算法还是看我下一篇吧。这一篇有点多,好吧我承认,有点繁琐(程序的编写繁琐),还没写好。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值