欢迎来到天天文库
浏览记录
ID:14750717
大小:183.50 KB
页数:16页
时间:2018-07-30
《数据结构课程设计-算术表达式求值的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程设计报告课程设计名称:数据结构课程设计课程设计题目:算术表达式求值的实现院(系):*****专业:*****班级:*****学号:*****姓名:*****指导教师:*****沈阳航空航天大学课程设计报告目录1课程设计介绍11.1课程设计内容11.2课程设计要求12课程设计原理22.1课设题目粗略分析22.2原理图介绍22.2.1功能模块图22.2.2流程图分析33数据结构分析53.1存储结构53.2算法描述54调试与分析74.1调试过程74.2程序执行过程7参考文献8附录(关键部分程序清单)913沈阳航
2、空航天大学课程设计报告1课程设计介绍1.1课程设计内容编写算法能够进行整型和实型数的表达式求值,能够根据运算的数据选择正确的运算结果的数据类型,表达式的运算符为:+,—,*,/,(,),且括号可以嵌套。1.2课程设计要求1.给出必要的输入、输出信息和提示信息。2.参考相应的资料,独立完成课程设计任务。3.交规范课程设计报告和软件代码。13沈阳航空航天大学课程设计报告2课程设计原理2.1课设题目粗略分析根据课设题目要求,拟将整体程序分为三大模块。此三个模块相互独立,没有嵌套调用的情况,以下是三个模块的大体分析:
3、1.首先依次定义字符类型栈、整型栈、运算符栈和操作数栈,构造运算符栈和操作数栈,然后运算符、操作数依次入栈。2.依次读入表达式,若是操作符即进OPND栈,若是运算符即进OPTR栈。顺序栈的存储结构是利用一组连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置,base为栈底指针,在顺序栈中,它始终指向栈底,即top=base可作为栈空的标记,每当插入新的栈顶元素时,指针top增1,删除栈顶元素时,指针top减1。3.按照运算符的优先级别对表达式进行求值运算。2.2原理图
4、介绍该功能模块图介绍了这个程序的主要功能。2.2.1功能模块图图2.1功能模块图13沈阳航空航天大学课程设计报告如图2.1所示,要实现表达式的求值,即必须要实现存储、读取和计算三项功能。存储即运算符、操作数的入栈;读取即运算符、操作数的出栈;计算即+、—、*、/的运算。2.2.2流程图分析1.Precede(charc1,charc2)判断运算符优先权,返回优先权高的。算符间的优先关系如下:表2.1运算符优先关系列表+-*/()#+><<<<>>->><<<>>*>>>><>>/>>>><>>(<<<<<=)
5、>>>>>>#<<<<<=2.intEvalExpr()主要操作函数。算法概要流程图:图2.2主要操作函数流程图13沈阳航空航天大学课程设计报告3.入栈出栈主要流程。图2.3入栈出栈主要流程图13沈阳航空航天大学课程设计报告3数据结构分析3.1存储结构因为表达式是由操作符,运算符和界限符组成的。如果只用一个char类型栈,不能满足2位以上的整数,所以还需要定义一个int类型的栈用来寄存操作数。/*定义字符类型栈*/typedefstruct{intstacksize;char*base;char*top;}S
6、tack;/*定义整型栈*/typedefstruct{intstacksize;int*base;int*top;}Stack2;3.2算法描述1.栈的基本功能。InitStack(Stack*s)和InitStack2(Stack2*s)分别构造运算符栈与构造操作数栈,Push(Stack*s,charch)运算符栈插入ch为新的栈顶元素,Push2(Stack2*s,intch)操作数栈插入ch为新的栈顶元素,Pop(Stack*s)删除运算符栈s的栈顶元素,用p返回其值,Pop2(Stack2*s)删
7、除操作数栈s的栈顶元素,用p返回其值,GetTop(Stacks)用p返回运算符栈s的栈顶元素,GetTop2(Stack2s)用p返回操作数栈s的栈顶元素。2.其它功能分析。(1)In(charch)判断字符是否是运算符功能,如果该字符是运算符返回1,实13沈阳航空航天大学课程设计报告现该功能的算法return(ch=='+'
8、
9、ch=='-'
10、
11、ch=='*'
12、
13、ch=='/'
14、
15、ch=='('
16、
17、ch==')'
18、
19、ch=='#')。(2)Precede(charc1,charc2)判断运算符优先权功能,
20、该函数判断运算符c1,c2的优先权,具体优先关系参照表1。(3)Operate(inta,charop,intb)操作数用对应的运算符进行运算功能。运算结果直接返回。(4)num(intn)求操作数的长度功能,需要用itoa函数把int型转换成字符串型,strlen函数可求字符长度。(5)EvalExpr()主要操作函数运算功能。13沈阳航空航天大学课程设计报告4调试与分析4.1调试过程在调试程序是
此文档下载收益归作者所有