四则运算的中缀表达式和后缀表达式

转载 2016年08月28日 17:54:53

http://blog.csdn.net/scu_daiwei/article/details/8616020

中缀表达式:就是运算符号在数字中间的表达方式。

后缀表达式:运算符号在数字的后面出现。


1、中缀表达式向后缀表达式的转换方法:

      规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,就判断当前符号与栈顶符号的优先级,如果是右括号或者是优先级低于栈顶符号(乘除优先加减),则栈顶元素依次出栈并输出(全部输出,如果是右括号,则到左括号输出为止),当前符号进栈,如此进行直到最终输出后缀表达式。


例子:将中缀表达式9+(3-1)*3+10/2 转换为后缀表达式

(1)输出9     栈为空

(2)“+” , “(”依次入栈      输出:9 3   ,紧接着“-”入栈     输出:9  3  1  

(3)下一个符号是“)” , 要与“(”匹配。因此栈顶符号依次出栈,直到“(”   

        输出结果为:9  3  1  -   , 栈内元素只剩下“+”

(4)紧接着是“*” , 优先级高于+ , 入栈  

(5)输出: 9  3  1  -  3

(6)“+”号优先级低于“*” , 因此站内元素依次出栈, 输出: 9  3  1 - 3 * +  , 再将此时的“+”入栈  

(7)输出: 9  3 1  -   3  *  +  10 

(8)“/”入栈      

(9)输出: 9  3  1  -  3 *  +  10  2 

(10)栈内所有符号出栈:  9   3   1  -  3  *  +  10  2  /  +

最后得到后缀表达式为:9   3   1  -  3  *  +  10  2  /  +



2、计算后缀表达式:

      规则:从左到右依次遍历后缀表达式,遇到数字就进栈,遇到符号就将栈顶的两个元素进行该符号的操作。注意:栈顶的元素是符号后的数字,栈顶元素的前一个元素是运算符的前面的数字。



例子:计算后缀表达式“9   3   1  -  3  * + 10 2 / + ”的值

(1)9 , 3  ,  1 入栈  , 栈内元素: 9   3   1 

(2)遇到符号“-” , 将栈顶元素出栈,按照顺序应该是: 3 - 1,得到结果2, 入栈,栈内元素为 : 9   2

(3)3 入栈, 栈内元素: 9  2  3 

(4)“*” , 2,3 出栈,   2*3 = 6 ,  6 进栈,栈内元素: 9  6

(5)“+” , 9,6出栈,9+6 = 15, 15入栈,栈内元素:15

(6)10, 2 依次入栈,栈内元素:15, 10  , 2

(7)“/” , 10 , 2 依次出栈,  10/2 = 5 , 5 入栈 ,  栈内元素: 15   5 

(8)“+” , 15  5 依次出栈  , 15 + 5 = 20  , 20 入栈  , 栈内元素: 20

(9)得到结果  20 


以上就是关于中缀表达式与后缀表达式的一些内容。


计算中缀表达式(实数,四则运算与括号)(双栈)

之前写过这方面的算法,用的思想是先将中缀表达式转化为后缀表达式,再计算。本文采用直接计算中缀表达式的方法,用两个栈分别保存,运算符和数值。另外在处理括号问题时,抛开之前增大优先级的繁琐方法,直接把括号...
  • that163
  • that163
  • 2012年05月11日 17:55
  • 3674

中缀计算四则运算表达式

因为最近在学编译原理,老师布置了个恶心的东西就是正则表达式的题目,所以用户到了字符匹配的运算,先温习一下四则运算的栈方法实现 主要是俩个栈 一个用来保存数字 一个用来保存操作符#include #i...

四则运算的中缀表达式和后缀表达式

中缀表达式:就是运算符号在数字中间的表达方式。 后缀表达式:运算符号在数字的后面出现。 1、中缀表达式向后缀表达式的转换方法:       规则:从左到右遍历中缀表达式的每个数字和符号,...

【数据结构】栈的应用---四则运算表达式求值(中缀表达式与后缀表达式转换)

用计算机实现带括号的四则运算的方式。这里的困难在于乘除运算的优先级高于加减运算,并且加入了括号,使得问题变得更加困难。20世纪50年代,波兰逻辑学家想到了一种不需要括号的后缀表达法,我们也把它称为逆波...

中缀转后缀表达式

  • 2013年04月24日 14:26
  • 5KB
  • 下载

前缀、中缀、后缀表达式和二叉树

概念: 前缀表达式(Prefix Notation)是指将运算符写在前面操作数写在后面的不包含括号的表达式,而且为了纪念其发明者波兰数学家Jan Lukasiewicz,所以前缀表达式也叫做“波...

中缀变后缀表达式

  • 2012年11月21日 19:15
  • 2KB
  • 下载

(转)前缀、中缀、后缀表达式及转换与应用

一.表达式的三种形式:     中缀表达式:运算符放在两个运算对象中间,如:(2+1)*3     后缀表达式:不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向...
  • liaote
  • liaote
  • 2013年05月21日 14:38
  • 533
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:四则运算的中缀表达式和后缀表达式
举报原因:
原因补充:

(最多只允许输入30个字)