表达式求值中自己判断运算符优先级,运算怎么运算,比如平常直接1+2就可以了,但自己定义的怎么计算,比如我从输入中选择 ‘+’ 运算符,并进行1+2运算,该怎么算,怎么让系统识别,我那个‘+’带着单引号呢.
http://blog.csdn.net/yuluows/article/details/7657944
无语死了,好在终于弄出来了。
题目:利用栈编写表达式求值程序:输入含有“+”、“-”、“*”、“/”四则运算的表达式,其中负数要用(0-正数)表示,并以=结束。要求输出表达式的值(两运算符号的有限关系见教材《数据结构》表3.1)。
测试样式:
【第一组自测数据】
【键盘输入】
3*(9-7)#↙
【正确输出】
6
【第......
答案就在这里:表达式求值,栈的应用(C语言)
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
表达式求值,先要解析表达式
也就是从一个 若干字符组成的表达式中
分析出 运算符,**操作数**,**以及运算的优先级**,
分析出,某个运算符的操作数,是哪些(这跟结合性有关,也跟优先级有关)
操作数,可以是** 常量表达式**,也可以是**单变量(对象,引用)表达式**,也可以是**复合表达式**
这些都是从字符串中识别出来的
一个表达式,本质上是一串字符
从中分析出 运算符,**常量表达式**,**单变量表达式**(这是表达式的三种终结符,分析到这里,就应该结束了)
表达式可以递归分析,那么 终结符 就是递归的终点
也可以迭代分析
那么 终结符,就是最后的细节,分析到这里,结构就清晰了,
可以开始计算了
表达式解析,可以用树处理
也可以用 栈处理
要先把中缀表达式改成后缀表达式,然后才可以用栈进行运算。