北京理工大学数据结构设计堆栈简易运算器教材.pptVIP

北京理工大学数据结构设计堆栈简易运算器教材.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京理工大学 / 北京理工大学 / 北京理工大学 / 北京理工大学 / 北京理工大学 / 北京理工大学 / 北京理工大学 / 北京理工大学 / 北京理工大学 / 北京理工大学 / 北京理工大学 / 北京理工大学 / 通过模拟一个简单的计算器来进行+、—、*、/、%、^(乘方)等运算,从键盘上输入一算术表达式(一般为中缀表达式),计算出表达式的值。 第 * 页 (1)可对一实数算术表达式进行简单的数学运算; (2)可以识别带加减乘除等运算符及括号的中缀表达式; (3)按照四则运算规则,求表达式的值。一般规则如下: a.先括号内,再括号外; b.先乘方,再乘除,后加减。 (4)同级运算从左到右顺序执行; (5)如表达式有误,应给出相应的提示信息。 第 * 页 一、bool stack1empty(save1 s) //判断数字栈是否为空 {if(s.top==-1) return 1; else return 0; } 第 * 页 二、bool stack2empty(save2 s) //判断运算符栈是否为空 {if(s.top==-1) return 1; else return 0; } 第 * 页 三、void push1(save1 s,double num) //将数据压入数字栈 {if(s.top==MAX-1) cout栈已满endl; else {s.top++; s.n[s.top]=num;} } 第 * 页 四、void push2(save2 s,char op) //将运算符压入运算符栈 {if(s.top==MAX-1) cout栈已满endl; else {s.top++; s.n[s.top]=op;} } 第 * 页 五、int in(char op) //在栈内优先级的判断 {switch(op) {case +:return 2;break; case -:return 2;break; case *:return 4;break; case /:return 4;break; case (:return -1;break; default:break; } } 第 * 页 六、int out(char op) //在栈外优先级的判断 {switch(op) {case +:return 1;break; case -:return 1;break; case *:return 3;break; case /:return 3;break; default:break; } } 第 * 页 七、void count(double a,char op,double b) //进行计算并将所得的结果压入栈顶 { double sum; switch(op) {case +:sum=a+b;break; case -:sum=a-b;break; case *:sum=a*b;break; case /:sum=a/b;break; default:break; } push1(stack1,sum); } 第 * 页 八、void cal( ) { int i=0,j; double a,b,c; char expression[MAX],operate,temp[20]; cout请输入表达式:; cinexpression; stack1.top=-1数;//清空字栈 stack2.top=-1;//清空运算符栈 第 * 页 八、void cal( ) while(expression[i]!== ) //以=号结尾 {if(isdigit(expression[i])) /*若读入的字符为数字,则继续判断下一个字符,直到下个字符不是数字或者不是小数点,即可保证该操作数是完整的小数,然后将该数入操作数栈

文档评论(0)

w5544434 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档