网站大量收购闲置独家精品文档,联系QQ:2885784924

表达式类型的实现毕业设计(论文).doc

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 课程设计 表达式类型的实现 学 院 计算机学院 专 业 计算机科学与技术 年级班别 2006级01班 学 号 3106006394 学生姓名 方锐洲 辅导教师__ 吴伟民_______ 成 绩_______ ______ 2008年7月 3 日 ~~~~~~~~~~表达式类型的实现~~~~~~~~~~ 目录: 一、需求分析------------------------3 二、概要设计-----------------------3-6 1、数据类型的声明: 2、表达式的抽象数据类型定义 3、整体设计 三、详细设计----------------------7-13 1、二叉树的存储类型 2、顺序栈的存储类型 3、表达式的基本操作 4、主程序和其他伪码算法 5、函数的调用关系 四、设计和调试分析-------------------14 五、用户手册------------------------14 六、测试--------------------------15-18 七、课程设计的心得和心得以及问题-----18 八、参考文献------------------------19 九、附录:程序清单-----------------19-35 一、需求分析【课程设计要求】 【问题的描述】 一个表达式和一棵二叉树之间,存在着自然的对应关系。写一个程序,实现基于二叉树表示的算术表达式Expression的操作。 【基本要求】 【一】【必做部分】 假设算术表达式Expression内可以含有变量(a-z),常量(0-9)和二元运算符(+,-,*,/,^(乘幂))。实现以下操作: (1)ReadExpr(E)――以字符序列的形式输入语法正确的前缀表达式并构造表达式E。 (2)WriteExpr(E)――用带括号的中缀表达式输出表达式E。 (3)Assign(V,c)――实现对变量V的赋值(V=c),变量的初值为0。 (4)Value(E)――对算术表达式E求值。 (5)CompoundExpr(p,E1,E2)――构造一个新的复合表达式(E1)p(E2)。 【二】【选做部分】 (1)以表达式的原书写形式输入,支持大于0的正整数常量; (2)增加常数合并操作MergeConst(E)——合并表达式E中所有常数运算。例如,对表达式E=(2+3-a)*(b+3*4)进行合并常数的操作后,求得E=(5-a)*(b+12) 【测试数据】 分别输入0;a;-91;+a*bc;+*5x2*8x;+++*3^*2^x2x6并输出。 每当输入一个表达式后,对其中的变量赋值,然后对表达式求值。 还有很多测试的数据,详细请见附上的文件Test.txt。 二、概要设计 1、数据类型的声明: 在这个课程设计中,采用了链表二叉树的存储结构,以及两个顺序栈的辅助存储结构 /*头文件以及存储结构*/ #includestdio.h #includeconio.h #includestdlib.h #includestring.h #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW 0 typedef int Status; 2、表达式的抽象数据类型定义 ADT Expression{ 数据对象D:D是具有数值的常量C和没有数值的变量V; 数据关系:R={(V或者C)P(V或者C)|V,C∈D, (V或者C)P(V或者C)表示由运算符P结合起来的表达式E} 基本操作: Status Input_Expr(string,flag) 操作结果:以字符序列的形式输入语法正确的前缀表达式,保存到字符串string; 参数flag表示输出的提示信息是什么,输入成功返回OK,否则,返回ERROR。 void judge_value(E,string,i) 初始条件:树E存在,表达式的前缀字符串string存在; 操作结果:判断字符string[i],如果是0-9常量之间,二叉树结点E存为整型;否则,存为字符型。 Status ReadExpr(E,exprstring) 初始条件:表达式的前缀形式字符串exprstring存在; 操作结果:以正确的前缀表示式exprstring并构造表达式E,构造成功,返回OK,否则返回ERROR。 Status Pri_Compare(c1,c2) 初始条件:c1和c2是字符; 操作结果:如果两个字符是运算符,比较两个

文档评论(0)

2749166188 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档