有关中缀表达式转换成后缀表达式的算法

原创 2007年10月12日 09:29:00

 中缀表达式是一般进行数学运算时用的式子,如: 4+2*3-2+6*5*(2-1)

后缀表达式主要是方便计算机对一个数学式子求值而衍生出来的,如上面那个式子的后缀表达式为:

4 2 3 * + 2 - 6 5 * 2 1 - *

闲话不说,转换算法如下:

str1 放中缀表达式,并在后面加一个'#'

str2 放后缀表达式, 当然先将其置空,另开一个栈放符号,并预先在符号栈存一优级极低的'#'

优先级按四则运算顺序, () >  * /  > +  -  > #; * = /    ; + = -

1, 从左到右读取str1;

2, 如果是操作数,则直接放进str2里;

3,如果是操作符, 则与栈顶的操作符相比较, 当然,这包括'#', 如果新读取的操作符比栈顶操作符的优先级高, 则直接将操作符进栈,如果新读取的操作符与栈顶操作符的优先级相等或者小于栈顶操作符的优先级, 则pop()出栈顶操作符,将其放进str2中, 再将新读取的操作符与新的栈顶操作符比较;

4,如果是'(', 直接进栈;

5, 如果是')',则依次弹出栈里面的操作符,直到遇到一个'('为止;

6,如果是'#',则说明已将中缀表达式读取完了, 所以直接将栈内操作符弹出放至str2中,包括栈中的'#'.

 

实现代码过两天会给出.

5-20 表达式转换 (25分)

5-20 表达式转换 (25分)算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。...
  • Changxing898
  • Changxing898
  • 2016年08月29日 10:30
  • 1552

《数据结构和算法》之中缀表达式、后缀表达式转换

一,在上篇博文中讨论了逆波兰表达式的计算问题,在这里讨论一下中缀表达式如何转换为后缀表达式        问题示例:如何将1+(2-3)*4+10/5 转换为后缀表达式 1 2 3 - 4 * + ...
  • huangchijun11
  • huangchijun11
  • 2017年03月09日 17:44
  • 1942

前缀、中缀、后缀表达式转换详解

前缀、中缀、后缀表达式转换详解 昨天参加了ebay实习生笔试题,其中一道题目给定了前缀表达式,让我们求转换成中缀表达式时辅助栈的做多情况下容乃几个元素以及中缀表达式的值。当时没有做出来,会后后网上查了...
  • walkerkalr
  • walkerkalr
  • 2014年04月02日 15:06
  • 6237

将中缀表达式转换成后缀表达式的三种方法

  • 2012年09月17日 10:50
  • 160KB
  • 下载

中缀表达式转换成前缀表达式和后缀表达式的极其简单方法【转】

35,15,+,80,70,-,*,20,/ //后缀表达方式 (((35+15)*(80-70))/20)=25 //中缀表达方式 /,*,+...
  • shizheng163
  • shizheng163
  • 2015年12月12日 13:42
  • 356

中缀转换成后缀表达式的计算

  • 2012年10月25日 23:21
  • 3KB
  • 下载

将浮点型算式的中缀表达式转换成后缀表达式并算出式子结果

最近因为需要了解如何将在Win应用程序控制台输入的算式表达式转化成其后缀表达式的算法,所以在网上搜索了一下,看到许多人的程序都只是对应于运算数在0~9的范围内的整型运算式,所以自己就写了一个可以计算浮...
  • u013457382
  • u013457382
  • 2015年09月03日 09:54
  • 1219

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

  • 2011年10月15日 14:22
  • 15KB
  • 下载

基于vc++6.0中缀表达式转换成后缀表达式代码

  • 2014年04月14日 13:35
  • 1KB
  • 下载

获取键盘输入一个中缀表达式,将它转换成后缀表达式,并输出结果

  • 2013年11月20日 23:34
  • 135KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:有关中缀表达式转换成后缀表达式的算法
举报原因:
原因补充:

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