- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
表达式求值-Read.doc
表达式求值
题目:编制一个求整数表达式的值的程序
班级:软件0504姓名:何兵杰学号:0120510680423完成日期:2007.7.12
需求分析
以字符序列的形式从终端输入语法正确的。不含变量的整数表达式。
利用课本表3.1给的信息,实现对四则混合运算表达式的求值,并仿造课本的例3-1演示在求值中运算符栈.运算数栈.输入字符和主要操作的变化过程。
测试数据(附后)。
概要设计
抽象数据类型的定义如下:
ADT Stack{
数据对象:D={ai=ElenSet,i=1.2.3…….n,n=0}
数据关系:R1={ai-1,ai|ai-1=D,i=2,…..n}
基本操作:
InitStack(S)
操作结果:构造一个空栈。
DestroyStack(S)
初始条件:栈已经存在。
操作结果:栈被消毁。
ClearStack(S)
初始条件:栈已经存在。
操作结果:将栈清空。
StackEmpty(S)
初始条件:栈已经存在。
操作结果:判定栈是否为空。
StackLength(S)
初始条件:栈已经存在。
操作结果:返回栈的元素个数。
GetTop(S,e)
初始条件:栈已经存在并非空。
操作结果:返回栈顶元素
Push(S,e)
初始条件:栈已经存在。
操作结果:插入新元素到栈顶。
Pop(S,e)
初始条件:栈已经存在并非空。
操作结果:删除栈顶元素,并将其值返回。
}ADT Stack
关键含数的伪码:
Status InitStack(SqStack S){
S.base=(SElemType *)malloc(STACK-INIT-SIZE*sizeof(SElemType));
If(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK-INIT-SIZE;
Return ok;
}
Status GetTop(SqStack S,SElemType e){
If(S.top==S.base)return ERROR;
e=*(S.top-1);
return ok;
}
Stack Push(SqStack S,SElemType e){
If(S.top-S.base=S.stacksize){
S.base=(SElemType*)realloc(S.base(S.stacksize+STACKINCREMENT)*
sizeof(SelemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
Return OK;
}
Stack Pop(AqStack S,SElemType e){
If(S.top==S.base)
Return ERROR;
e=*--S.top;
return OK;
}
OperandType EvaluateExpression(){
InitStack (optr);
Push(optr,’#’);
initStack(opnd);
c=getchar();
while(c!=’#’||GetTop(optr)!=’#’){
if(!In(c,op)){Push (opnd,c);c=getchar();}
else
swith(Precede(GetTop(optr),c)){
case ‘’:
Push(optr,c);
c=getchar();
break;
case ‘=’:
Pop(optr,x);
c=getchar;
break;
case’’:
Pop(optr,theta);
Pop(opnd,b);
Pop(opnd,a);
Push(opnd,Operate(a,theta,b));
Break;
}
Return GetTop(opnd);
}//EvaluateExpression
详细设计
栈的各种操作
// 漏洞:01+2=3 误认为合法
// (-2+3) 误认为非法
// 1/0 默认为允许
//////////// 以上漏洞已经修复 2007年5月22号
#includeiostream
#include 计算.h
#include Windows.h //Sleep()函数
#define NUM 1
#define OPE 2 //判断字符的类型
#define RK 3
#define LK 4
#define END 5
#define OTHER -1
typedef char SElemType;
using namespace std;
struct Sq
您可能关注的文档
最近下载
- 高边坡专项施工方案(专家论证版).pdf VIP
- 《工程化学基础》教案-第3章-2011.ppt VIP
- 抗日英雄王二小.pptx VIP
- 第5课 用发展的观点看问题-【中职专用】2024年中职思想政治《哲学与人生》金牌课件(高教版2023·基础模块).pptx VIP
- 老友记台词剧本第一季第1集中英双语左右对照.pdf VIP
- 形势与政策社会实践报告模板.docx VIP
- 全套SPC表格(很全面) CPK.xls VIP
- T_CI 540-2024 红枣蒸馏酒生产技术规程.pdf
- 施工组织设计方案(高速公路通信迁改).docx VIP
- Part3-4 Unit6 Craftsmanship课件高一英语(高教版基础模块2).pptx
文档评论(0)