- 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)如果读入的是运算符,则立即从运算数栈中弹出两个运算数,计算两
您可能关注的文档
- 13000DWT散货船报价书.doc
- 大连地铁205标段项目经理部-地铁隧道施工缝施工质量控制QC.doc
- 《怦然心动的人生整理魔法2》14幅收纳示意图.docx
- XXXXXXXX煤矿2017年安全生产标准化工作计划.doc
- 2018届名句默写训练(含答案).doc
- 察举制考试资料.doc
- 主题班会课教案——学会倾听.doc
- 信阳料理商业策划书.docx
- 习作之我见正版.doc
- (修订版)最新版七年级语文上册词语拼音注释.doc
- 《语文园地(一)》人教版六年级上册语文精品PPT课件.pptx
- 茶色简约风室内设计专业毕业设计平面方案PPT模板课件.pptx
- 3.12植树节绿色生态环保宣传演讲PPT模板课件.pptx
- 白色大气商务演讲汇报通用PPT模板课件.pptx
- 安全生产规范责任制设备采购计划PPT模板课件.pptx
- 《语文园地(6)》小学语文一年级下册PPT课件(第6.4课时).pptx
- 部门每日早会内容记录情况公司晨会流程介绍PPT模板课件.pptx
- 不同反响创意手机简约手机发布会PPT模板课件.pptx
- 茶文化知识宣讲PPT模板课件.pptx
- 《圆柱的认识》人教版六年级数学下册 (第3.1课时)PPT课件.pptx
最近下载
- 07564唐宋词研究(广东)通关宝典.pdf
- 幼儿园书法练字启蒙第五讲、第六讲完整课件.pptx VIP
- 五年级数学集体备课(初稿) (1).doc
- 人教精通版2024三年级英语上册Unit 2 达标检测卷+答案.doc
- 重庆市第一中学校2024-2025学年九年级上学期期初检测数学试题(解析版).docx VIP
- 2022-2023学年合肥市庐阳区寿春中学九年级上学期期中数学试卷(含答案解析).docx
- 国家开放大学《西方行政学说》章节测试参考答案.pdf
- 保安人员基本信息登记表.docx
- ExponentialandLogarithmicFunctions.ppt
- 17松鼠(任务二) 大单元公开课课件 部编版五年级语文上册.ppt
文档评论(0)