1、 学年论文学年论文(设计)(设计) (本科)(本科) 学学 院院 专专 业业 年年 级级 姓姓 名名 论文(设计)题目论文(设计)题目 算术表达式求值算术表达式求值 指导教师指导教师 职称职称 成成 绩绩 2012 年 月 日 学号:学号: 2 目录目录 一、一、概述概述3 3 二、二、设计目的设计目的. .3 3 三、设计功能分析三、设计功能分析3 3 四、概要设计说明四、概要设计说明4 4 五、详细信息说明五、详细信息说明5 5 六、流程图六、流程图1010 七、程序代码七、程序代码1010 八、调试及运行结论八、调试及运行结论1717 九、总结九、总结1919 十、参考文献十、参考文献1
2、919 3 一、概述一、概述 数据结构是计算机程序设计的重要理论技术基础, 它不仅是计算机学科的核 心课程,而且已成为其它理工专业热门选修课。而且它与计算机其他课程都有密 切联系,具有独特的承上启下的重要位置。拥有数据结构这门课程的知识准 备,对于学习计算机专业的其他课程,如操作系统、数据库管理系统、软件工程 的都是有益的。 二、设计目的二、设计目的 1、了解算术表达式的不同表现形式及相应算法实现的不同。 2、深入了解栈的特性,并在实际问题背景下灵活运用。 3、掌握字符串解释为表达式的意义和数字转化。 三、三、设计功能分析设计功能分析 算术表达式求值程序实现以下功能: (1) 构造一个空栈 S
3、,初始条件:栈 S 已存在 (2) 用 P 返回 S 的栈顶元素 (3) 插入元素 ch为新的栈顶元素 (4) 删除 S 的栈顶元素 (5) 判断字符是否是运算符,运算符即返回 1 (6) 判断运算符优先权,返回优先权高的 (7) 输入表达式 (8) 返回表达式的最终结果。 4 四:概要设计说明四:概要设计说明 在计算机中算术表达式由常量、变量、运算符和括号组成。由于不同的运算 符优先级不同,而且还要考虑括号;因此算术表达式不可能完全严格的从左到右 执行。因此在设计程序时,要借助栈的功能。 算法输入:一个算术表达式,由常量、变量、运算符、括号组成(以字符串 的形式输入) 。操作符为+、-、*、
4、/,用#表示结束。 算法输出:表达式运算结果。 算法要点:设置运算符栈和运算数栈辅助分析算术符优先关系。在读入表达 式的字符序列的同时,完成运算符和运算数的识别处理,以及相应运算。 基本操作: InitStack( char *base; char *top; Stack1 /*定义整形栈*/ typedef struct int stacksize; int *base; int *top; Stack2 2 2、主要算法 、Precede(char c1,char c2) 判断运算符优先权,返回优先权高的。 算符间的优先关系如下: + - * 、 ( ) # 6 + - * / ( # , , , , , , , , , , , , , , , , , , , , !, , , ; else r=; /switch break; /switch return r; /Precede bool In(char d)/判断 c 是否为七种运算符之一 switch(d) case+: 14 case-: case*: case/: case(: case): case#: return true; default: return false; /switch SElemType Operate( SElemType a, S