资源简介
利用栈实现算术表达式的求值,表达式中可包含加+、减(负) -、乘*、除/、
乘方^、括号( )运算符,操作数可以为浮点数。 可采用直接求中缀表达式的方法,
也可采用先转换成后缀表达式后再求值的方法(参看课件) 。
实现时需注意如下:
( 1)带小数点的数值生成 ( 理解整数数值的生成,小数部分的处理与之类似)。
( 2)考虑负号的情况。负号与减号形式上一样,如何区分?
• 输入的表达式串中第 1 个字符是’-’
– 可断定此’-’是负号
• 其余的’-’
– 若紧接在’(’之后的’-’可断定是负号
( 3)负号的处理
• 方法 1:若已断定是负号,可先压入数值 0 进入操作数栈,如此,可
将负号看作减号。
• 方法 2: 若已断定是负号,则紧接其后的数字字符转换成数值后,要
将其对应的相反数(负数)压入操作数栈
代码片段和文件信息
#include“Sqstack.h“
#include“other.h“
int main()
{
char str[100];
linkStack OPTR; //创建运算符栈
linkStack1 OPND; //创建操作数
printf(“请输入表达式:\n“);
printf(“如:a+b*c#\n“);
scanf(“%s“&str);
printf(“表达式值:“);
printf(“%lf\n“Evluateexpression(strOPTROPND)); //输出最后计算结果
DestoryStack(OPTR); //销毁栈
DestoryStack(OPND);
printf(“栈已成功销毁!\n“);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 510 2015-10-29 19:53 表达式求值\ex
文件 1062 2015-11-03 10:45 表达式求值\Sqstack.cpp
文件 1128 2015-10-29 19:41 表达式求值\Sqstack.h
文件 2027 2015-12-26 16:23 表达式求值\other.cpp
文件 270 2015-10-29 21:13 表达式求值\other.h
文件 528 2015-10-29 19:07 表达式求值\表达式求值.dsw
目录 0 2016-10-15 17:15 表达式求值\
评论
共有 条评论