- 24
- 0
- 约1.29万字
- 约 33页
- 2017-05-21 发布于浙江
- 举报
数据结构实验二——算术表达式求值实验报告
《数据结构与数据库》
实验报告
实验题目
算术表达式求值
学 院:化学与材料科学学院
专业班级:09级材料科学与工程系 PB0920603
姓 名:李维谷
学 号:P
邮 箱:liwg@mail.ustc.edu.cn
指导教师:贾伯琪
实验时间:2010年10月10日
需要分析
问题描述:
表达式计算是实现程序设计语言的基本问题之一,它的实现是栈的应用的一个典型例子。设计一个程序,演示通过将数学表达式字符串转化为后缀表达式,并通过后缀表达式结合栈的应用实现对算术表达式进行四则混合运算。
问题分析:
在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。
设置运算符栈(字符型)和运算数栈(浮点型)辅助分析算符优先关系。在读入表达式的字符序列的同时完成运算符和运算数的识别处理,然后进行运算数的数值转换在进行四则运算。
在运算之后输出正确运算结果,输入表达式后演示在求值中运算数栈内的栈顶数据变化过程,最后得到运算结果。
算法规定:
输入形式:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为使实验更完善,允许操作数为实数,操作符为(、)、.(表示小数点)、+、-、*、/、^(表示乘方),用#表示结束。
输出形式:演示表达式运算的中间结果和整个表达式的最终结果,以浮点型输出。
程序功能:对实数内的加减乘除乘方运算能正确的运算出结果,并能正确对错误输入和无定义的运算报错,能连续测试多组数据。
测试数据:正确输入:12*(3.6/3+4^2-1)#
输出结果:194.4
无定义运算:12*(3.6/(2^2-4)+1)#
输出结果:表达式出错,除数为0,无意义
错误输入:12+s#
输出结果:ERROR!
概要设计
拟采用两种类型的展分别对操作数和操作符进行操作。程序中将涉及下列两个抽象数据类型:
1、设定“操作数”的栈的抽象数据类型定义:
ADT SqStack_f{
数据对象:D={
数据关系:R1={|,,i=2,…,n}
约定端为栈顶,端为栈底。
基本操作:
InitStack_f(S)
操作结果:构造一个空栈S。
GetTop_f(S,e)
初始条件:栈S已存在。
操作结果:用e返回S的栈顶元素。
Push_f(S,ch)
初始条件:栈S已存在。
操作结果:插入元素ch为新的栈顶元素。
Pop_f(S,e)
初始条件:栈S已存在。
操作结果:删除S的栈顶元素,并以e返回其值。
}ADT SqStack_f
2、设定“操作符”的栈的抽象数据类型定义:
ADT SqStack_c{
数据对象:D={
数据关系:R1={|,,i=2,…,n}
约定端为栈顶,端为栈底。
基本操作:
InitStack_c(S)
操作结果:构造一个空栈S。
GetTop_c(S,e)
初始条件:栈S已存在。
操作结果:用e返回S的栈顶元素。
Push_c(S,ch)
初始条件:栈S已存在。
操作结果:插入元素ch为新的栈顶元素。
Pop_c(S,e)
初始条件:栈S已存在。
操作结果:删除S的栈顶元素,并以e返回其值。
}ADT SqStack_c
3、本程序包含六个模块
1)主程序模块
void main( )
{
初始化;
while(命令==“继续”)
{
接受数据;
处理数据;
接受命令;
}
}
2)栈模块——实现栈抽象数据类型
3)判断运算符优先级模块——判断运算符的优先级别
4)后缀表达式转换模块——将中缀表达式转换为后缀表达式,方便操作
5)无括号表示式求值运算模块——根据后缀表达式求值,并输出中间和最终结果
6)运算结果输出模块——以正确形式输出表达式的值
详细设计
1、主程序中需要的全程量
#define TTACK_INIT_SIZE 100 //初始分配最大空间量
#define STACKINCREMENT 10 //(默认)增补空间量
2、结点类型、指针类型
typedef struct{
float *base; //存储实型数据元素的一位数组
float *top; //栈顶指针
int stacksize; //栈数组容量
}SqStack
您可能关注的文档
- 数据库图书管理系统实训报告.docx
- 数据库实报告4---表单设计.doc
- 数据库实验 交互式sql.pdf
- 数据库实验20150508.ppt
- 数据库实验报告 13072204.docx
- 数据库实验报告(2014安工大周兵老师).doc
- 数据库实验报告(7个实验完整附截图).doc
- 数据库实验报告6-13.docx
- 数据库实验报告:ado连接数据库.pdf
- 数据库实验指导书_梁宝华.pdf
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- 中医推拿技巧PPT培训课件.ppt
- 隐写术与取证考试题目及答案解析.docx VIP
- 中华民族共同体概论课件第四讲天下秩序与华夏共同体演进(夏商周时期)2025年版.pptx VIP
- 浙G37-2012 静钻根植桩先张法预应力混凝土竹节桩.pdf VIP
- 定向钻工程监理实施细则.docx VIP
- 南开大学23春“信息安全”《信息隐藏技术》补考试题库附答案.docx VIP
- 大学课程《水利水电工程建筑物》PPT课件:8.5第八章第五节 水电站厂房的类型和布置.pptx VIP
- 2025年北京电子科技职业学院单招笔试综合素质试题库含答案解析(5套试题).docx VIP
- 2025-2026学年人教版(新教材)初中生物八年级下册教学计划及进度表.docx
- 中华民族共同体概论课件专家版2第二讲__树立正确的中华民族历史观.pptx VIP
原创力文档

文档评论(0)