数据结构课程设计报告_算术表达式求值

数据结构课程设计报告_算术表达式求值

ID:35617597

大小:207.67 KB

页数:15页

时间:2019-04-02

数据结构课程设计报告_算术表达式求值_第1页
数据结构课程设计报告_算术表达式求值_第2页
数据结构课程设计报告_算术表达式求值_第3页
数据结构课程设计报告_算术表达式求值_第4页
数据结构课程设计报告_算术表达式求值_第5页
资源描述:

《数据结构课程设计报告_算术表达式求值》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、软件学院课程设计报告书课程名称数据结构设计题目算术表达式求值专业班级学号姓名指导教师刘金亮2010年12月1设计时间22设计目的23设计任务24设计内容34.1需求分析34.1.1程序的功能34.1.2基本要求:34.1.3测试数据:34.2总体设计34.2.1程序用到的抽象数据类型34.2.2主程序流程图:44.2.3说明各模块之间的调用关系:44.3详细设计44.3.1程序中用到的抽象数据类型:44.4测试与分析64.4.1测试64.4.2调试分析84.5附录85总结与展望121设计时间2010年12月27至2010年12月302

2、设计目的加强我们的实践能力,掌握数据结构的应用,算法的编写,类C语言的算法转换成C程序并上级调试的基本方法。对我们基本的程序设计素养的培养和软件工作者作风的训练,起到显著的促进作用。3设计任务设计一个程序,演示用算符优先法对算术表达式求值的过程。4设计内容4.1需求分析4.1.1程序的功能(1)完成运算符和运算数的识别处理。(2)在识别出运算数的同时,将字符序列形式转换成整数形式。(3)实现对算数四则混和运算表达式的求值。4.1.2基本要求:1、在本次演示中,要输入以字符序列的形式,语法正确且不含变量的整数表达式然后咦“#”结束。2、

3、由于算符有优先关系,故用栈来实现。设置运算符栈接收运算符,优先权低的压入栈内,优先权高的进行运算,设置运算数栈,来接收运算数,并存储运行的结果。3、在读入字符序列的同时,完成运算符合运算数(整数)的识别处理,以及相应的运算,在识别出是运算数的同时,将当前字符序列转换成整数形式。4.1.3测试数据:1)8+2-32)3*(7-2)3)8/(4-2)4.2总体设计4.2.1程序用到的抽象数据类型本程序利用栈的概念,利用栈“先进后出”的原则,利用链表的存储结构,进而设计的。4.2.2主程序流程图:(1)首先定义一个栈,将字符x入栈定义栈结点

4、,之后x出栈,既得到栈顶元素初始化的一个栈;(2)对输入的字符判断是否为运算符,并比较其优先级;(3)在读入字符序列的同时,完成运算符合运算数(整数)的识别处理。在读入字符序列的同时,完成运算符合运算数(整数)的识别处理在读入字符序列的同时,完成运算符合运算数(整数)的识别处理。4.2.3说明各模块之间的调用关系:本算法一共进行了两次调用,第一次调用是charEval_Exp()对voidPushOptr(SNode*top,charx)和charPopOptr(SNode*top)的调用,第二次是主函数对charEval_Exp()

5、的调用,完成了运算符的操作,完成字符串对整形的转换。4.3详细设计4.3.1程序中用到的抽象数据类型:栈#include#include#defineNULL0typedefstructnode{//栈结点chardate;structnode*next;}SNode;SNode*InitStack(){//初始化topSNode*top;top=(SNode*)malloc(sizeof(SNode));top->next=NULL;returntop;}4.3.2对主程序和其它主要函数写出伪码算

6、法:charEval_Exp(){//完成运算符操作chara,b,c,r,f,z;intresult;SNode*top[2];top[0]=InitStack();PushOptr(top[0],'#');top[1]=InitStack();c=getchar();while(c!='#'

7、

8、(GetTop(top[0]))!='#'){if(!In(c)){PushOptr(top[1],c);c=getchar();}else{r=Precede(GetTop(top[0]),c);switch(r){case'<':Pus

9、hOptr(top[0],c);c=getchar();break;case'=':PopOptr(top[0]);c=getchar();break;case'>':b=PopOptr(top[0]);a=PopOptr(top[1]);z=PopOptr(top[1]);result=Operate(z,b,a);f=result+'0';//用+'0'完成字符串对整形的转换PushOptr(top[1],f);break;}}}returnf;}4.3.3画出函数的调用关系图各程序模块之间的层次(调用)关系:main()主函数E

10、val_Exp()完成运算符作操PushOptr(SNode*top,charx)入栈PopOptr(SNode*top)出栈算符间优先关系如下表:+-*/()#+>>><<>>->>><<>>*>>>><>>/>>>>

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。