数据结构小论文.docxVIP

  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文档。上传文档
查看更多
数据结构小论文

表达式求值运算一、数据结构的概念数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。根据数据元素间关系的不同特性,通常有下列四类基本的结构: ⑴集合结构。该结构的数据元素间的关系是“属于同一个集合”。 ⑵线性结构。该结构的数据元素之间存在着一对一的关系。 ⑶树型结构。该结构的数据元素之间存在着一对多的关系。 ⑷图形结构。该结构的数据元素之间存在着多对多的关系,也称网状结构。常用结构有链表、栈、队列、数组、树、图、堆、散列表。二、运用的数据结构——栈栈是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据,即最后一个数据被第一个读出来。三、构建的数学模型四、程序代码#include stdio.h#include stack#include iostream#include stringusing 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=;elsef=;break;case*:case/:if(t1==*||t1==/||t1==))f=;elsef=;break;case(:if(t1==)){printf(input error\n);return (0);}elsef=;break;case):switch(t1){case(:f==;break;case#:printf(input error\n);return (0);default:f=;}break;case#:switch(t1){case#:f==;break;case(:printf(input error\n);return (0);default:f=;}}return f;}//判断两个运算符的优先级int operate(intb,chartheta,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是运算符intevaluateexpress(){stackint opnd;//声明了1个存储int型元素的栈,存储操作数opndstackchar optr;//声明了1个存储char型元素的栈,存储运算符optrchartheta,c[100];char d[]={#,\0};//将#放入定义的d数组inta,x,b;//初始化操作数a,x,bchar n;optr.push(#);cinc;strcat(c,d);//合并c,d数组,输入算术表达式时不用在末尾输入#inti=0;while(c[i]!=\0){if(!in(c[i])){c[i]-=0;int m;m=c[i];int j=i+1;if(!in(c[j])){c[j]-=0;m=m*10+c[j];i++;}opnd.push(m);i++;}else{n=optr.top();switch(precede(n,c[i])){ //c[i]尚未入栈,n是运算符栈的栈顶元素case:optr.push(c[i]);break;case=:optr.pop();break;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();cout\nn;}五、结果截图输入数据:1、1+(20+4)/(4-1) 2、2*9-6-(20+4)/(4-1)六、总结程序设计时,不要怕遇到错误,在实际操作过程中犯的一些错误还会有意外的收获,也不要一味相信教科书上给的代码,碰到断点逐行调试找出问题能收获更多,利用栈表达式求值这个实验中很多人用7*7的二维数组存储运算符优先级表,

文档评论(0)

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

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

1亿VIP精品文档

相关文档