算术表达式地求解-大数据结构课程设计报告材料

算术表达式地求解-大数据结构课程设计报告材料

ID:47072950

大小:82.38 KB

页数:17页

时间:2019-07-16

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

《算术表达式地求解-大数据结构课程设计报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用文档课程设计报告题目:算术表达式求值一、需求分析1、设计要求:给定一个算术表达式,通过程序求出最后的结果1>、从键盘输入要求解的算术表达式;2>、采用栈结构进行算术表达式的求解过程;3>、能够判断算术表达式正确与否;4>、对于错误表达式给出提示;5>、对于正确的表达式给出最后的结果;2、设计构想:为了实现算符优先算法使用两个工作栈,一个称作OPTR,以寄存运算符;另一个称作OPND,用以寄存操作数或运算结果。在操作数和操作符入栈前,通过一个函数来判别,输入的是操作数还是操作符,操作数入OPND,操作符入OPTR。在输入表达式的最后输入‘#’,设定‘#’的优先级最低,代表表达式输

2、入结束。在表达式输入过程中,遇操作数则直接入栈,遇到运算符则与栈顶运算符比较优先级,若当前运算符优先级高,则当前运算符入栈,扫描下一符号;否则栈顶运算符出栈,两操作数出栈,进行运算,所得结果入数栈,重新比较当前运算符与新栈顶运算符。如此重复直到栈顶运算符与当前符号均为‘#’,运算结束。二、概要设计1、本程序包含的模块:文案大全实用文档(1)栈模块——实现栈抽象数据类型(2)运算模块——实现数据表达式的运算(3)主程序模块算术运算式的求解栈模块主函数模块main运算模块初始化栈定义栈结构出栈入栈取栈顶元素判断输入字符类型判断符号优先级基础运算函数运算函数三、详细设计(1)栈模块1、定

3、义栈结构structSqstack文案大全实用文档{elemtype*top;//栈顶元素elemtype*base;//栈底元素intstacksize;//栈的大小 };2、栈的基本操作①初始化栈statusinitstack(structSqstack&s){s.base=(elemtype*)malloc(stack_size*sizeof(elemtype));if(!s.base)returnOVERFLOW;s.top=s.base;s.stacksize=stack_size;returnOK;}②入栈statuspush(structSqstack&s,elemt

4、ypee){文案大全实用文档if(s.top-s.base>=s.stacksize){s.base=(elemtype*)realloc(s.base,(s.stacksize+stack_increasement)*sizeof(elemtype));if(!(s.base))returnOVERFLOW;s.top=s.base+s.stacksize;s.stacksize+=stack_increasement;}*s.top++=e;returnOK;}③出栈elemtypepop(structSqstack&s){elemtypee;if(s.top==s.base)

5、returnERROR;e=*--s.top;文案大全实用文档returne;}④取栈顶元素elemtypegettop(structSqstack&s){elemtypee;if(s.top==s.base)returnERROR;e=*(s.top-1);returne;}(2)运算模块1、判断输入字符c是否为操作符:若是,则返回1;否则,返回0intIn(intc){charp[10]="+-*/()#^";inti=0;while(p[i]!=''){文案大全实用文档if(p[i]==c)return1;i++;}return0;}2、判断运算符的优先级charprec

6、ede(chartop,charc)//该函数为判断当前运算符与前一个运算符的优先级,前一个运算符高于或等于当前运算符的优先级则返回‘>’,前一个运算符小于当前运算符的优先级则返‘<’,当前一个运算符为‘(’当前运算符为‘)’时返回‘=’,用于去除表达式的括号。{charresult;switch(c){case'#':result='>';break;case'+':case'-':if(top=='#'

7、

8、top=='(')文案大全实用文档result='<';elseresult='>';break;case'*':case'/':if(top=='*'

9、

10、top=='/'

11、

12、

13、top=='^')result='>';elseresult='<';break;case'%':if(top=='%'

14、

15、top=='/'

16、

17、top=='^'

18、

19、top=='*')result='>';elseresult='<';break;case')':if(top=='(')result='=';elseresult='>';break;文案大全实用文档case'(':result='<';break;case'^':result='<';break;de

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

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

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