数据结构实验报告表达式求值.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验报告表达式求值

(一) 需求分析1、输入的形式和输入值的范围2、输出的形式 当按照程序要求选择了1或0之后,再输入表达式;如果选择的是1,则程序将自动运算出表达式结果;如果之前选择的是0,则程序将现将中缀表达式转化为后缀表达式并计算出结果。 3、程序所能达到的功能4、测试数据: (二) 概要设计 为了实现上述操作,应以为存储结构。 1.?? 基本操作:int GetTop(SqStack *s) 初始条件:栈存在; 操作结果:若栈为空,则返回s的栈顶元素;否则返回ERROR。 (2). void Push(SqStack *s,int e) 初始条件:栈存在; 操作结果:插入e为新的栈顶元素。 (3). int Pop(SqStack *s) 初始条件:栈存在; 操作结果:若栈不空,则删除之,并返回其值;否则返回REEOR。 (4).void InitStack(SqStack *s) 初始条件:栈存在; 操作结果:置栈为空。 (5). int Empty(SqStack *s) 初始条件:栈存在; 操作结果:判定s是否为空栈。 (6). int Operate(int a,char theta, int b) 初始条件:操作数a和b存在,且theta是+、-、*、/四则运算; 操作结果:返回a与b间theta运算的结果。 (7). int In(char s,char* TestOp) 初始条件:s为待判断字符,TestOp为已知的算符集合; 操作结果:s为算符集合中的元素则返回1,否则返回0. (8). int ReturnOpOrd(char op,char* TestOp) 初始条件:op为待确定运算符,TestOp为已知的算符集合; 操作结果:确定运算符类型。 (9). char precede(char a, char b) 初始条件:a、b存在; 操作结果:返回算符a和b的优先权高低。 (10). void PrintOpnd(SqStack *s) 初始条件:栈存在; 操作结果:输出运算数栈。 (11). void PrintOptr(SqStack *s) 初始条件:栈存在; 操作结果:输出运算符栈。 (12). void Store(char *s,char ch) 初始条件:字符数组 s存在,字符ch已知; 操作结果:将ch存入数组s。 (13). void Change(char *s1,char *s2) 初始条件;重罪表达式s1已知; 操作结果:将中缀表达式s1转为后缀表达式s2。 2. 本程序包含个模块: (1)???????? 主程序模块; (2)???????()???????? 模块调用图: ?????????????????? 主程序模块 (三) 详细设计 1.?? 元素类型,结点类型: int data[SIZE]; int top; int base; }SqStack; char OPSET[7]={+ , - , * , / ,( , ) , #}; //定义OPSET字符数组为算符集合 char Prior[7][7] = { // 算符间的优先关系 ,,,,,,, ,,,,,,, ,,,,,,, ,,,,,,, ,,,,,=, , ,,,, ,,, ,,,,, ,= }; 2.?? 每个模块的分析: (1)???????? 主程序模块: int main(){ char s=0,c; while(1){ c=getchar(); fflush(stdin); if(c==1){//中缀表达式运算结果 printf(%d\n,EvaluateExpression_1()); } else{//后缀表达式运算结果 printf(%d\n,EvaluateExpression_2()); } do{ scanf(%c,s); if(s==q||s==Q) exit(0); } while(s!=\n); system(cls); } return 0; } (2)int EvaluateExpression_1(){ SqStack OPND,OPTR; char ch,theta,exp[100]={0}; int i=0,s=0,a=0,b=0,step=0; InitStack(OPND); InitStack(OPTR); Push(OPTR,#); gets(exp); ch=exp[0]; while(ch!=#||GetTop(OPTR)!=#){ if(!In(ch,OPSET)){//不是运算符则

文档评论(0)

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

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

1亿VIP精品文档

相关文档