课程设计报告
课程设计名称:数据结构课程设计
课程设计主题:实现算术表达式评价院(系) *****
专业: *****
类: *****
学号: *****
姓氏: *****
指导教师: *****目录
1课程设计介绍1
1.1课程设计内容1
1.2课程设计要求1
双程设计原理2
2.1课程设置问题粗略分析2
2.2原理图介绍2
2.2.1功能框图图2
2.2.2流程图分析3
3数据结构分析5
3.1存储结构5
3.2算法说明5
4调试和分析7
4.1调试过程7
4.2程序执行步骤7
参考文献8
附录(主要部分程序列表) 91课程设计介绍
1.1课程设计内容编制算法可以进行整数型和实数型表达式的评估,可以根据运算的数据选择正确运算结果的数据类型。 表达式的运算符为、*、/、括号可以嵌套。
1.2课程设计要求1 .给出必要的输入、输出信息和提示信息。 2 .参考相应资料,独立完成课程设计任务。 3 .提交规范课程设计报告和软件代码。
双程设计原理
2.1根据课目题目的大致分析课目要求,计划将整个程序分为三个模块。 如果这三个模块相互独立且没有嵌套调用,则以下是对这三个模块的粗略分析。 1 .首先依次定义字符类型堆栈、整数堆栈、运算符堆栈和操作数堆栈,构建运算符堆栈和操作数堆栈,然后依次将运算符、操作数放入堆栈。 2 .依次读取表达式,运算符进入OPND堆栈,运算符进入OPTR堆栈。 顺序堆栈的存储结构利用连续的一系列存储单元依次存储从堆栈底到堆栈顶的数据要素,并且附加指针top表示堆栈顶要素在顺序堆栈中的位置。 base是堆栈底部指针,在顺序堆栈中总是指向堆栈底部。 也就是说,top=base是堆栈空的标签,每次插入新的堆栈顶点要素时指针top增加1,删除堆栈顶点要素时指针top减少13.按照运算符的优先顺序评价公式。
2.2原理图介绍了该功能模块图,介绍了该程序的主要功能。
2.2.1功能框图
图2.1功能框图
如图2.1所示,实现公式评价需要实现保存、读取、计算三个功能。 运算符,读取存储操作数的堆栈,即运算符、操作数的输出; 也就是说,计算、*、/的运算。
2.2.2流程图分析1.precede(CharC1、char c2 )判断运算符的优先级,返回优先级高的。
运算符之间的优先级如下:
表2.1运算符优先关系列表
-//() (((/)=) #=2.int EvalExpr ) )主要操作函数。 算法概要流程图:
图2.2主要操作函数流程图
堆叠的主要过程。
图2.3堆栈的主要流程图图3数据结构分析
3.1内存配置
因为表达式由运算符、运算符和边界符组成。 因为只有一个char类型堆栈不能满足2位或更大的整数,所以还必须定义int类型堆栈来注册操作数。
/*定义字符类型堆栈*
类型定义结构{
int stacksize;
char *base;
char *top;
}堆叠;
/*整数堆栈定义*
类型定义结构{
int stacksize;
int *base;
int *top;
}堆栈2;
3.2算法描述1 .堆栈的基本功能。
init堆栈(堆栈* s )和init堆栈2 (堆栈2 ) s )分别构建运算符堆栈和操作数堆栈,push )堆栈、char ch运算符堆栈将ch作为新的堆栈顶部元素,即ch )作为s插入的pop (堆栈* s )删除运算符堆栈s的堆栈顶部元素,用p返回其值,pop2)堆栈2 * s删除操作数堆栈s的堆栈顶部元素,用p返回其值,然后获取
(1) in ) charch )判断字符是否为运算符,如果该字符为运算符则返回1,实现该功能的算法return (ch=' '|ch='-'|ch=' * '|| | 具体优先关系见表1。 (3)操作