




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
表达式求值运算一、数据结构的概念数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。根据数据元素间关系的不同特性,通常有下列四类基本的结构: 集合结构。该结构的数据元素间的关系是“属于同一个集合”。 线性结构。该结构的数据元素之间存在着一对一的关系。 树型结构。该结构的数据元素之间存在着一对多的关系。 图形结构。该结构的数据元素之间存在着多对多的关系,也称网状结构。常用结构有链表、栈、队列、数组、树、图、堆、散列表。二、运用的数据结构栈栈是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据,即最后一个数据被第一个读出来。三、构建的数学模型四、程序代码#include stdio.h#include #include #include using namespace std;int in(char c)switch (c)case+:case-:case*:case/:case(:case):case#:return 1;default: return 0;/判断C是否是运算符char precede(char t1,char t2)char f;switch(t2)case+:case-:if(t1=(|t1=#)f=;break;case*:case/:if(t1=*|t1=/|t1=)f=;elsef=;break;case(:if(t1=)printf(input errorn);return (0);elsef=;break;case#:switch(t1)case#:f=;break;case(:printf(input errorn);return (0);default:f=;return f;/判断两个运算符的优先级int operate(int b,char theta,int a)int c;switch(theta)case+:c=(a+b);break;case-:c=(a-b);break;case*:c=(a*b);break;case/:c=(a/b);return c;/对两个操作数进行计算,theta是运算符int evaluateexpress()stack opnd;/声明了1个存储int型元素的栈,存储操作数opndstack optr;/声明了1个存储char型元素的栈,存储运算符optrchar theta,c100;char d=#,0;/将#放入定义的d数组int a,x,b;/初始化操作数a,x,bchar n;optr.push(#);cinc;strcat(c,d);/合并c,d数组,输入算术表达式时不用在末尾输入#int i=0;while(ci!=0)if(!in(ci)ci-=0;int m;m=ci;int j=i+1;if(!in(cj)cj-=0;m=m*10+cj;i+;opnd.push(m);i+;elsen=optr.top();switch(precede(n,ci) /ci尚未入栈,n是运算符栈的栈顶元素case:theta=optr.top();optr.pop();a=opnd.top();opnd.pop();b=opnd.top();opnd.pop();opnd.push(operate(a,theta,b);continue;i+;x=opnd.top();opnd.pop();return x;int main()int n=evaluateexpress();coutnn;五、结果截图输入数据:1、1+(20+4)/(4-1) 2、2*9-6-(20+4)/(4-1)六、总结程序设计时,不要怕遇到错误,在实际操作过程中犯的一些错误还会有意外的收获,也不要一味相信教科书上给的代码,碰到断点逐行调试找出问题能收获更多,利用栈表达式求值这个实验中很多人用7*7的二维数组存储运算符优先级表,我觉得这是对空间的一种浪费,故采用了参考书讲解的另一种算法。表达式求值定义了两个栈,操作数和操作符是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 欣赏 五十六个民族同唱一支歌说课稿-2025-2026学年小学音乐西师大版四年级上册-西师大版
- 第15课《白杨礼赞》说课稿 2025-2026学年统编版语文八年级上册
- 高中遗传学习题与知识点总结
- 皮革行业循环经济模式探索-洞察及研究
- 区块链SEO平台开发与运营-洞察及研究
- 量子密钥分发的混合协议设计-洞察及研究
- 风机节能材料应用-洞察及研究
- 服装厂安全生产事故案例及防范措施
- 深海钻探虚拟现实培训效果评估-洞察及研究
- 办公软件应用能力提升培训课件
- 2025四川绵阳燃气集团有限公司招聘下属能创公司应用工程师岗位1人考试参考试题及答案解析
- 2025年及未来5年中国工程总承包行业市场深度分析及发展前景预测报告
- 2025年地理考试真题试卷及答案
- 月饼的变迁教学课件
- 2025年电信招聘考试试题及答案
- 2025年四川省情省况考试复习题库题库(含答案)
- 生物反馈与认知行为疗法结合-洞察及研究
- GB/T 46134-2025天然酯在电气设备中的维护和使用导则
- 人民解放军占领南京教学课件
- 新疆维吾尔自治区幼儿园等级评估标准(试行)
- 工程图学习题集答案合工大课件
评论
0/150
提交评论