- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
表达式求值数据结构实训报告
数据结构实训 总结报告题目:表达式求值学生姓名:学生学号: 专业班级: 指导老师: 目录1.课题分析1.1需求分析..............................................................1. 2设计要求2.总体设计2.1主程序的流程详细设计(步骤及代码实现)3. 1判断运算符优先级..............................................3. 2中缀表达式转后缀表达式..................................3. 3后缀表达式求值..................................................4.测试结果5.心得体会6.参考文献1.课题分析1.1需求分析(1)栈“后进先出”的特点。(2)中缀表达式转后缀表达式,并利用后缀表达式求值。1.2设计要求(1)运算对象存在多位整数。(2)实现表达式错误的报错。(3)判断运算符优先级。(4)中缀表达式转后缀表达式。2.总体设计2.1主程序的流程详细设计(步骤及代码实现)3.1判断运算符优先级(乘除优先于加减)int SqStack::cmp(char ch) {switch(ch) { case +: case -: return 1; case *: case /: return 2; default : return 0; } } 3.2中缀表达式转后缀表达式(1)首先置操作数栈为空栈,表达式起始符“#”为运算符栈的栈底元素;(2)定义一个运算符栈,并输入一个中缀表达式(运算对象存在多位整数,运算符为+、-、*、/、%及括号),然后从中缀表达式中自左至右依次读入各个字符。(3)在字符串s1读取到的运算对象直接输送到后缀表达式 字符串s2,两相邻操作数之间利用空格隔开。(4)如果读入的是运算符,并且运算符栈为空,则将该运算符直接进栈;如果栈不为空,则比较该运算符和栈顶运算符的优先级。 若该运算符高于栈顶运算符的优先级,则将该运算符直接进栈;若该运算符低于或等于栈顶运算符的优先级,则将栈中高于或等于该运算符优先级的元素依次出栈,然后再将该运算符进栈。出栈的运算符输入到s2中,利用空格隔开。(5)如果读入的是开括号“(”,则直接进栈;如果读入的是闭括号“)”,则一直出栈并输出到后缀表达式,知道遇到一个开括号“(”为止。开括号“(”和闭括号“)”均不输出到后缀表达式。(6)重复345步,直到中缀表达式结束,然后将栈中剩余的所有运算符依次出栈。void SqStack::change(string s1, string s2) { stack char s; s.push(#); int i = 0; while(i s1.length()) {if(s1[i] == () s.push(s1[i++]); else if(s1[i] == )) { while( s.top() != ( ){ s2 += s.top(); s2 += ; s.pop(); } s.pop(); i++; }else if( s1[i] == +||s1[i] == -||s1[i] == *||s1[i] == / ) {while( cmp(s.top()) = cmp(s1[i]) ){s2 += s.top(); s2 += ; s.pop();} s.push(s1[i]); i++;} else{ while(0 = s1[i]s1[i] = 9||s1[i] == .){ s2 += s1[i++]; } s2 += ; } } while(s.top() != #){ s2 += s.top(); s2 += ; s.pop(); } } 3.3后缀表达式求值(1)定义一个double型的运算数栈,将中缀表达式转换得到的后缀表达式字符串自左向右依次读入。(2)如果读入的是运算对象,则将该运算对象串(下一个逗号分隔符前的部分所构成的数字字符串)转换为对应的多位整数值,然后将该整数值(将自动类型转换为double型)直接进入运算数栈。(3)如果读入的是运算符,则立即从运算数栈中弹出两个运算数,计算两
您可能关注的文档
最近下载
- 比亚迪-元EV535-产品使用说明书-智联领潮型-BYD7003BEV4-元ev535201903.pdf
- 妇科恶性肿瘤的手术治疗与随访指导.pptx
- ZY-SH-4食品安全管理体系审核指南.docx
- 婴幼儿大动作发展剖析课件.ppt VIP
- 食品安全管理体系审核与认证要求指引.pptx
- 婴幼儿动作发展的早期促进措施.pptx VIP
- 浅析影响DA42飞机最小控制速度的因素及解决办.docx
- 2024-2025学年 八年级上册物理(2024年新教材)教材课后习题-练习与应用(原动手动脑学物理).docx
- 《0—3岁儿童观察与评估(第一版)》0—3岁儿童动作发展的观察与评估.pptx VIP
- 肾内科提高临床路径入径率PDCA.pptx
文档评论(0)