1、 课程设计报告课程设计报告 课程名称: 数据结构课程设计 课程设计题目: 表达式求值问题 姓 名: 系: 计算机科学与技术 专 业: 计算机科学与技术 年 级: 学 号: 指导教师: 职 称: 讲师 2011 年 12 月 31 日 目目 录录 1.设计目的:. 1 2.设计要求:. 1 3.设计方案:. 1 4.设计内容:. 2 4.1需求分析. 2 4.2概要设计. 2 4.3.详细设计 4 4.4.调试分析与结果 7 4.5:使用说明 11 5.总结:. 11 6.附录三:源代码. 12 第 1 页 表达式求值问题表达式求值问题 1.设计目的设计目的: 数据结构课程设计是计算机专业集中实
2、践性环节之一,是学习完数据 结构课程后进行的一次全面的综合练习。其目的是: (1)要达到理论与实际应用相结合,使学生能够根据数据对象的特性,学 会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养 良好的程序设计技能。 (2) 在实践中认识为什么要学习数据结构, 掌握数据结构、 程序设计语言、 程序设计技术之间的关系,是前面所学知识的综合和回顾。 2.设计要求设计要求: 以字符序列的形式从键盘输入语法正确的、不含变量的整数(或实数)表达 式,实现对算术四则混合运算表达式的求值。当用户输入一个合法的算术表达式 后,能够返回正确的结果。能够计算的运算符包括:加、减、乘、除、括号,
3、对 于异常表达式能给出错误提示。 3.设计方案设计方案: 任何一个表达式都是由操作符,运算符组成的。我们分别用顺序栈来寄存表 达式的操作数和运算符。栈是限定于紧仅在表尾进行插入或删除操作的线性表。 顺序栈的存储结构是利用一组连续的存储单元依次存放自栈底到栈顶的数据元 素。 为了实现算符优先算法。 可以使用两个栈。 一个称为 OPF, 用以寄存运算符, 另一个称做 OPS,用以寄存操作数或运算结果。 1.首先置操作数栈为空栈,表达式起始符”#”为运算符栈的栈底元素; 2.依次读入表达式,若是操作符即进 OPS 栈,若是运算符则和 OPF 栈的栈顶 运算符比较优先权后作相应的操作,直至整个表达式求
4、值完毕(即 OPF 栈的栈顶 元素和当前读入的字符均为”#”) 。 第 2 页 4.设计内容设计内容: 4.1需求分析 本程序所做的工作为:能直接求出四则表达式的值,并输出;本程序可用于小学 教师对学生作业的快速批改以及对数值位数要求较大的科学运算。 4.2概要设计 1./用于存储用于存储操作操作数数和运算结果(和运算结果(OPS): ADT LinkStack 数据元素:此链栈中的所有元素类型为字符型的数字字符 数据关系:栈中数据元素之间是线性关系。 基本操作: (1)InitStack(LinkStack 定义字符指针 *p,*q,*temp;temp 指向运算符后面的一个字符 double i=0,a=0,b=0; 将传入的实参赋给 p,q; 定义一个运算符栈 OPF; 定义一个操作数栈 OPS; 调用函数 InitStack()初始化栈 OPS; 调用函数 CInitCharStack()初始化栈 OPF; 调用函数 CPush(OPF,#)将#压入运算符栈; c=*p;temp=p;p+; 第 5 页 if