表达式求值

原创 2007年10月13日 17:27:00

这里介绍的是将中缀表达式转换成后缀表达式,然后求值。 

中缀表达式转换成后缀表达式需要一个栈来保存操作符。

转换的具体规则如下:

从输入中读取的字符 动作
操作数 写至输出
左括号( 推其入栈
右括号)

栈非空时,重复以下步骤:

弹出一项,若项不为(,则写至输出。项为(则退出循环

操作符(opThis)

若栈为空,推入opThis,否则,栈非空时,重复步骤:

弹出一项

若项为(,推其入栈

若项为操作符(opTop),则

若opTop<opThis,推入opTop

若opTop>=opThis,输出opTop

若opTop<opThis则退出循环,或项为(,推入opThis

没有更多项 当栈非空时,弹出项目,将其输出

后缀表达式求值如下:

从后缀表达式中读取的元素 执行的动作
操作时 入栈
操作符 从栈中提出两个操作数,用操作符将其运算。结果入栈

 

表达式求值表达式求值

  • 2009年04月17日 12:45
  • 4KB
  • 下载

表达式求值算法总结

表达式求值算法表达式求值,一般采用栈和队列的方式来求值,下面介绍表达式求值的两种算法。方法一、使用两个栈,一个为操作符栈OPTR(operator),一个是操作数栈OPND(operand) 算法过...
  • honglicu123
  • honglicu123
  • 2016-09-18 16:00:14
  • 2371

C++实现任意表达式求值(栈)

今天花了大概四个小时时间,用栈(stack)实现了“任意表达式的值计算”的问题。 C++ 比 C 好的一点就是,C++ 的STL定义了大量的数据类型和算法,相比于 C 更加视觉化。 实现这个的基本思路...
  • flyfy1
  • flyfy1
  • 2010-02-16 10:51:00
  • 11610

经典算法-算术表达式求值

网上找了几个相关的代码 可惜不满足我的要求 修改如下 /**//*经典算法-算术表达式求值析用堆栈解析算术表达式的基本方法。给出的示例代码能解析任何包括+,-,*,/,()和0到9数字组成的算术表达式...
  • thecrazyboy
  • thecrazyboy
  • 2007-03-07 21:19:00
  • 15633

表达式求值 - Java实现

本程序用于计算任意四则运算表达式。如 4 * ( 10 + 2 ) + 1 的结果应该为 49。 算法说明: 1. 首先定义运算符优先级。我们用一个 Map> 来保存优先级表。这样我们...
  • tracker_w
  • tracker_w
  • 2014-06-22 22:04:27
  • 1778

表达式求值c语言

数据结构书上的例题。 其实就是比较运算符优先级。 #include #include #include #include #include using namespace std; st...
  • su20145104009
  • su20145104009
  • 2015-12-31 10:22:52
  • 1798

C++表达式求值(利用数据结构栈)

唉,刚刚用C++又重新写了一个较完善的表达式求值程序,最后精简后程序还不到100行,这不经让我 想到了大一上学期刚学c语言时自己费了好大的劲,写了几百行而且功能还不是很齐全(当时还不能计算有括号的表...
  • u011390632
  • u011390632
  • 2014-05-04 23:47:55
  • 5280

C++实现表达式求值 文件

  • 2011年04月14日 23:25
  • 944KB
  • 下载

表达式求值-栈和队列的应用

#include #include #define OK 1 #define ERROR 0 #define STACK_SIZE 20 #define STACK_INCREMENT 10 #de...
  • robin_Xu_shuai
  • robin_Xu_shuai
  • 2016-03-11 22:57:39
  • 893

表达式求值算法

编写代码对算术表达式求值的经典方法由 Donald Knuth 描述于 1962 年(请参阅 参考资料)。Knuth 将此概括为三个步骤: 对中缀表达式进行语法分析中缀表达式到后缀表达式的转换对...
  • hewei0241
  • hewei0241
  • 2014-04-02 23:36:04
  • 2323
收藏助手
不良信息举报
您举报文章:表达式求值
举报原因:
原因补充:

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