表达式类型的实现毕业设计(论文)(已处理)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表达式类型的实现毕业设计(论文)(已处理)课程设计表达式类型的实现
学院计算机学院专业计算机科学与技术年级班别 2006级01班学号3106006394
学生姓名方锐洲辅导教师__ 吴伟民_______ 成绩_______ ______
2008年7月 3 日
表达式类型的实现
目录
一需求分析
二概要设计
1数据类型的声明
2表达式的抽象数据类型定义
3整体设计
三详细设计
1二叉树的存储类型
2顺序栈的存储类型
3表达式的基本操作
4主程序和其他伪码算法
5函数的调用关系
四设计和调试分析
五用户手册
六测试
七课程设计的心得和心得以及问题-----18
八参考文献
九附录程序清单
一需求分析课程设计要求
问题的描述
一个表达式和一棵二叉树之间存在着自然的对应关系写一个程序实现
基于二叉树表示的算术表达式Expression的操作
基本要求
一必做部分
假设算术表达式Expression内可以含有变量a-z常量0-9和二元运算
符-乘幂实现以下操作
1ReadExpr E ――以字符序列的形式输入语法正确的前缀表达式并构造
表达式E
2WriteExpr E ――用带括号的中缀表达式输出表达式E
3Assign Vc ――实现对变量V的赋值V c变量的初值为0
4Value E ――对算术表达式E求值
5CompoundExpr pE1E2 ――构造一个新的复合表达式E1pE2
二选做部分
1以表达式的原书写形式输入支持大于0的正整数常量 2增加常数合并操作MergeConst E 合并表达式E中所有常数运算例如对表
达式E 23-a b34 进行合并常数的操作后求得E 5-a b12 测试数据
分别输入0a-91abc5x28x32x2x6并输出
每当输入一个表达式后对其中的变量赋值然后对表达式求值还有很多测试的数据详细请见附上的文件Testtxt 二概要设计
1数据类型的声明
在这个课程设计中采用了链表二叉树的存储结构以及两个顺序栈的辅助
存储结构
头文件以及存储结构
include
include
include
include
define TRUE 1
define FALSE 0
define OK 1
define ERROR 0
define OVERFLOW 0
typedef int Status
2表达式的抽象数据类型定义
ADT Expression
数据对象DD是具有数值的常量C和没有数值的变量V
数据关系R V或者C P V或者C VC?D V或者C P V或者C 表示由运算符P结合起来的表达式E
基本操作
Status Input_Expr stringflag
操作结果以字符序列的形式输入语法正确的前缀表达式保存到字符串string 参数flag表示输出的提示信息是什么输入成功返回OK否则返回ERROR void judge_value Estringi
初始条件树E存在表达式的前缀字符串string存在
操作结果判断字符string[i]如果是0-9常量之间二叉树结点E存为整型否则存为字符型
Status ReadExpr Eexprstring
初始条件表达式的前缀形式字符串exprstring存在
操作结果以正确的前缀表示式exprstring并构造表达式E构造成功返回OK否则返回ERROR
Status Pri_Compare c1c2
初始条件c1和c2是字符
操作结果如果两个字符是运算符比较两个运算符的优先级c1比c2优先返回OK 否则返回ERROR
void WriteExpr E
初始条件表达式E存在
操作条件用带括弧的中缀表达式输入表达式E
void Assign EVcflag
初始条件表达式E存在flag为标志是否有赋值过
操作结果实现对表达式E中的所有变量V的赋值 V c long Operate
opr1opropr2
初始条件操作数opr1和操作数opr2以及操作运算符opr 操作结果运算符运算求值参数opr1opr2为常量opr为运算符根据不同的运
算符实现不同的运算返回运算结果
Status Check E
初始条件表达式E存在
操作结果检查表达式E是否还存在没有赋值的变量以便求算数表达式E的值long Value E
初始条件表达式E存在
操作结果对算术表达式求值返回求到的结果
void CompoundExpr PE1E2
初始条件表达式E1和E2存在
操作条件构造一个新的复合表达式 E1 P E2
Status Read_Inorder_Expr stringpre_expr
操作结果以表达式的原书写形式输入表达式的原书写形式字符串string变为字符串pre_expr后调用reversal_string 函数反转得到前缀表达式
pre_expr得到正确的前缀表达式返回OK否则返回ERROR
void MergeConst E
操作结果常数合并操作合并表达式E中所有常数运算
ADT Expression
3整体设计
在这个课程设计中有两个源代码文件expressionh和expressionc
在expressionh文件中包含了各个存储结构的声明和辅助存储结构的两个栈的基本操作在expressionc文件中是实现课程设计要求的各个函数
《一》expressionh文件的整体结构
1各个存储结构的声明
2两个除了栈名和栈存储的元素不一样的顺序栈的基本操作其基本操作如下对于栈SqStack
Status InitStack SqStack S 构造一个空栈S
Status StackEmpty SqStack S 若栈S为空栈则返回TRUE否则返回FALSE Status Push SqStack SSElemType e 插入元素e为新的栈顶元素