欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    栈结构演示程序.docx

    • 资源ID:877388       资源大小:33.13KB        全文页数:14页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    栈结构演示程序.docx

    算法与数据结构设计报告2012/2013学年第二学期题目:栈结构演示程序专业软件工程学生姓名班级学号指导教师指导单位计算机科学与技术系0期2013年6月评分细那么评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度答复下列问题准确度简短评语教师签名:年月日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格栈结构演示程序一、课题名称栈结构演示程序。二、课题内容和要求理解栈的结构特点和元素的进栈、出栈等操作,并以表达式计算为例,通过图形方式对进栈、出栈操作进行模拟演示。表达式计算是程序设计编译中的的一个最根本的问题,在表达式求值过程中用到栈。在高级语言程序设计中存在各种表达式,表达式由操作数、操作符、和界限符组成。一个表达式中如果操作符在两个操作数之间,那么称之为中缀表达式。尽管中缀表达式是最普遍使用的书写形式,但在程序设计中常用后缀形式求值,原因是后缀表达式中无括号,计算时无需考虑操作符的优先级。后缀表达式的计算过程为:从左往右依次扫描后缀表达式,遇到操作数就进栈,遇到操作符就从栈中弹出两个操作数,执行该操作符所规定的运算,并将结果进栈。如此下去,直到遇到结束符“旷结束。现在用图形方式,对进栈、出栈操作进行演示。三、需求分析本课题的根本设计要求用堆栈实现,因此建立一个堆栈类,作为操作的根本。由于是对计算过程进行战士,涉及到表达式的计算。而具体的计算过程需要用到后缀表达式,因此需要有一个模块将中缀表达式转换成后缀表达式。定义一个CaICUlatOr类实现计算过程,并在计算过程中,实现对堆栈的输出和展示。因此本程序主要分为三个模块:堆栈类的建立、中缀表达式转换成后缀表达式、后缀表达式的计算及计算过程的展示。四、概要设计在此说明每个局部的算法设计说明(可以是描述算法的流程图,使用ViSiO画图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义,如果用面向对象的方法,应该给出类中成员变号和成员函%原型声明)。开始InfixToPostfix函数将输入的中缀表达式转换成后缀表达式(正文格式:宋体,小五、详细设计(格式Calcul对后缀过程中出atnr半涌讨RnnW结束勺数实现F在计算J图形输阐各个算法实现的源程序(可以是一组源程序,每个功能模块采用不同的函数实现),源程序要按照写程序的规那么来编写。要结构清晰,重点函数的重点变量,重点功能局部要加上清晰的程序注释。(正文格式:宋体,小4号,不加粗,两端对齐,L5倍行距)Stack,h:ttinclude<iostream>usingnamespacestd;classCalculator;template<classT>classStack(public:virtualboolIsEmpty()const=0;virtualboolIsFullOconst=O;virtualboolTop(T&x)const=0;virtualboolPush(Tx)=0;virtualboolPop()=0;virtualvoidClearO=O;;template<classT>classSeqStack:publicStack<T>(public:SeqStack(intmSize);"zSeqStackOdeletes;boolIsEmptyOconstreturntop-l;boolIsFul1()constreturntop-maxTop;boolTop(T&x)const;boolPush(Tx);boolPop();voidClearOtop=-l;friendCalculator;private:inttop;intmaxTop;T*s;);template<classT>SeqStack<T>:SeqStack(intmSize)(maxTop-mSize-1;s=newTmSize;top=-l;)template<classT>boolSeqStack<T>:Top(T&x)constif(IsEmpty()CoUt<<"Empty”<<endl;returnfalse;)X=Stop;returntrue;)template<classT>boolSeqStack<T>:Push(Tx)(if(IsFull()(cout<<7z0verflow/z<<endl;returnfalse;)S+top=X;returntrue;)template<classT>boolSeqStack<T>:Pop()(if(IsEmptyO)(cout<<z,underflow7z<<endl;returnfalse;)top;returntrue;)Calculator,h:Itinclude"stack.h#include<cmath>include<cstring>constintSIZE=30;char*InfixToPostfix();intisp(charch);inticp(charch);classCalculator(public:Calculator(intmaxSize):s(maxSize);voidRun();voidClearOs.Clear();)private:SeqStack<double>s;voidPushOperancKdouble);boolGetOperands(double&,double&);voidDoOperator(char);;voidCalculator:PushOperand(doubleop)(s.Push(op);cout<<z,<<op。进栈<<|<<for(inti=s.top;i>-l;i-)cout<<s.si<<z,;cout<<endl;)boolCalculator:GetOperands(double&opl,double&op2)(if(!s.Top(opl)(Cerr“Missingoperand!z,<<endl;returnfalse;)S.PopO;if(!s.Top(op2)(CelT<<"MissingOPerand!”<<endl;returnfalse;)s.PopO;returntrue;)voidCalculator:DoOperator(charoper)(boolresult;doubleoperl,oper2;result=GetOperands(operl,oper2);if(result)switch(oper)(case'+,:s.Push(oper2+operl);cout<<z,”<<oper2<<""<<operl<<"出栈,计算“<<oper2<<"+"<<operl<<",结果"<<oper2+operl<<进栈<<"<<";for(intj=s.top;j>-l;j)(cout<<s.sj<<z,”;)cout<<endl;)break;case'-,:s.Push(oper2-operl);cout<<,z"<<oper2<<""<<oPerI<<"出栈,计算“<<oper2<<"-"<<operl<X",结果"<<oper2-operl<<“进栈|"<<"for(inti=s.top;i>-l;i-)(cout<<s.si<<")cout<<endl;)break;case,*':s.Push(oper1*oper2);cout<<zz"<<oper2<<""<<operl<<"出栈,计算“<<oper2<<"*"<<operl<<","<<”结果"<<oper2*operl<<“进栈<<|<<;for(intm=s.top;m>-l;m-)(cout<<s,sm<<*;)cout<<endl;)break;case',:if(fabs(operl)<le6)(cerr<<zzI)ividebyO!zz<<endl;Clear();)elses.Push(oper2operl);COUt<<""<<oper2<<、"<<operl<<"出栈,计算“<<oper2<<""<<operl<<","<<结果"<<oper2/OPer1«进栈<<|"<<";for(intc=s.top;c>-l;c-)cout<<s.sc<<")cout<<endl;)break;,公,case:s.Push(pow(oper2,oper1);cout<<z,”<<oper2<<""<<operl<<"出栈,计算<<oper2<<""<<operl<<",”<<结果<<POW(OPer2,oper1)<<进栈<<"|"<<";for(intd=s.top;d>-l;d-)(cout<<s.sd<<z,”;)cout<<endl;)break;)elseClear();)voidCalculator:Run()(charc;doublenewop;char*postfix=InfIxToPostfix();cout<<postfix<<endl;inti=O;c二postfixi;COUt<<<<endl;操作cout<<z,扫描项"<<endl;whiIe(c!='#')COUt<<<<endl;COUt<<"<<c<<"|;switch(c)(case,+,:case,->:case'*':case,:case,r:DoOperator(c);break;default:cin.putback(c);cin>>newop;PushOperand(newop);break;)c=postfix+i;/cout<<"z,<<end)COUt<<“<<endl;CoUt<<U|<<遇到结束符,弹出结果"<<endl;COUt<<<<endl;if(s.Top(newop)cout<<newop<<endl;)char*InfixToPostfix()SeqStack<char>s(SIZE);charch,y;s.Push('#');inti=O;char*Postfix=newcharSIZE*sizeof(char);for(intj=0;

    注意事项

    本文(栈结构演示程序.docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开