算术表达式的求解数据结构课程设计说明书.doc

算术表达式的求解数据结构课程设计说明书.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算术表达式的求解数据结构课程设计说明书

中北大学 数 据 结 构 课 程 设 计 说 明 书 ? ? ? 学生姓名: ?张蓓 学 号: 1021011602? 学 院: 软件学院 专 业: 软件工程? 题 目: 算术表达式的求解 指导教师 何志英 ? ? ? ?2011年12月20日 设计任务概述(包括系统总体框图及功能描述) 利用栈结构,求解用户正确输入的算术表达式,并实现保存、读取、清除功能,且对用户输入的错误信息进行提示,重新输入. 本设计所采用的数据结构(如:链表、栈、树、图等) 本设计采用了栈结构,创建了两个栈,一个压入数字,另一个压入符号。 功能模块详细设计 详细设计思想 求解表达式的主要思想是创建两个栈,一个是符号栈,另一个是数字栈。符号栈关键是运算优先顺序,数字栈关键是多位数与小数的计算。 本程序设计了四个模块,第一个模块double result(double num1,char op,double num2),主要目的是进行加减乘除运算的操作方法,num1与num2的关系;第二个模块int compute(char str[]),主要目的是对用户输入的算术表达式进行求解,其中对多位数与小数进行了定义与数值计算,以及带括号的表达式运算的优先顺序;第三个模块void face(),主要目的是设计用户主界面;第四个模块是主函数,主要目的是将上述模块集中运用,进行求解。至此完成利用栈结构求解表达式运算。 核心代码 调用的库函数: #include stdio.h #include conio.h #include stdlib.h #include process.h #include string.h 自己定义的函数: double result(double num1,char op,double num2) 进行加减乘除运算 int compute(char str[]) 对用户输入的算术表达式进行求解 void face() 用户主界面 main() 主函数 核心定义函数设计: int compute(char str[]) { double num=0; int i=0,j=1,k=1; int Flag=0; numTop=opTop=0; while(str[i]!=\0||opTop0) { if(str[i]=0str[i]=9) if(Flag==0) num=num*10+str[i]-0; else { num+=(str[i]-0)/(j*10.0); j*=10; } else if(str[i]==.) Flag=1; else if( k==1str[i]==-(i==0||op(str[i-1])) ) k=-1; else { if(i0!op(str[i-1])str[i]!=(str[i-1]!=)) { numStack[numTop++]=num*k; num=0; j=1; Flag=0; k=1; } if(opTop==0||str[i]==() opStack[opTop++]=str[i]; else if(str[i]==)) { while(opTop0opStack[--opTop]!=() { numStack[numTop-2]=result(numStack[numTop-2],opStack[opTop],numStack[numTop-1]); numTop--; } if(opStack[opTop]!=() retu

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档