- 6
- 0
- 约2.42万字
- 约 21页
- 2016-10-12 发布于贵州
- 举报
数据结构课程设-用栈求表达式
课 程 设 计 报 告
学院、系: 吉林大学珠海学院计算机科学与技术系 专 业: 网络工程 班 级: 十三班 课程设计科目 数据结构 学生姓名: 林艾鑫 指导教师: 余江 完成时间: 2010年10月-12月
题目十三、利用栈求表达式的值
设计任务与目标
编写程序实现表达式求值,即验证某算术表达式的正确性,若正确,则计算该算术表达式的值。
主要功能描述如下:
1、从键盘上输入表达式,以“=” 号结束表达式。
2、分析该表达式是否合法:
(1)是数字,则判断该数字的合法性。若合法,则压入数据到堆栈中。
(2)是规定的运算符,则根据规则进行处理。在处理过程中,将计算该表达式的值。
(3)若是其它字符,则返回错误信息。
3、若上述处理过程中没有发现错误,则认为该表达式合法,并打印处理结果。
附加功能:
规定表达式的合法性
小数计算
计算记录的保存与查看
(1)规定表达式的合法性,括号配对,不能出现“6++3”、“6+-3”等符号重叠的情况。
(2)表达式开头只能是数字或“(”,表达式中只能有一个“=”。
程序中应主要包含下面几个功能函数:
void initstack():初始化堆栈
int make_str():语法检查并计算
int push_num(double num):将操作数压入堆栈
char procede(char top,char code):处理操作码
int change_opnd(int operate):将字符型操作码转换成优先级
int change_opnd(char code):将操作码压入堆栈
char pop_opnd(opnd *op):将操作码弹出堆栈
int caculate(int cur_opnd):简单计算+,-,*,/
double pop_num(num *nu):弹出操作数
方案设计与论证
定义一个expression全局表达式结构体expr[1000]存放计算过的表达式(expstr[MAXSIZE])和计算结果(result)、一个计量器(i)、一个表达式字符串、 一个操作码栈和一个操作数栈;
把表达式字符串从头到尾逐一扫描,将输入的表达式进行语法检查;
第一个字符只能是数字或“(”,最重一个字符只能是“=”;
表达式括号必须配对,中间不能出现“=”;
在“(”前面只能是“+、-、*、/、( ”,在“+、-、*、/、=、)”前面只能是数字或“)”;
把表达式字符串从头到尾逐一扫描,直到表达式扫描完毕,操作码栈为空;
把字符根据运算优先级别选择操作;
把表达式中的数值部分字符串转成数值压入操作数栈;
是“(”直接压入到操作码栈,级别比操作码栈顶元素高的,把运算符压入操作码栈;
级别比操作码栈低的,弹出操作码栈的栈顶元素和操作数栈的两个栈顶元素,进行运算后再压入操作数栈;
是“)”,若操作码栈顶是“(”,把弹出操作码栈顶元素,否则“)”视为级别最低的元素,重复7;
最后计算出结果并将其存放在expr[i],计量器加1;
重复计算后,将结果保存在文件里,并统计计算次数;
查看多次计算结果,以表形式输出;
查看本次计算记录,以表形式输出;
清除计算记录,重新计算。
算法说明
程序总共有如下函数:
主要函数:
void start(opnd *op,num *nu)//程序主菜单
void start2(opnd *op,num *nu)//第二层计算选择,子菜单
void load()//显示所有计算记录
void save()//保存计算结果
void check()//显示本次计算结果
void result(opnd *op,num *nu)//计算结果
double caculate(opnd *op,num *nu)//简单计算+,-,*,/
表达式处理函数:
int make_str()//语法检查
double change_num(char str[])//数字字符串转成double型数字
char procede(char top,char code)//处理操作码,判断栈的操作
int change_opnd(char code)//字符型操作码转换优先级,非表达式字符返回-2
栈操作函数:
double get_num(num *nu)//查看操作数栈栈顶
double pop_num(num *nu)//操作数栈出栈
int push_num(num *nu,double da)//压入操作数栈
int empty_num(num *nu)//判空
void initstack(num *nu)
char get_opnd(opnd *op)//查
您可能关注的文档
- 数据库复习模拟题6.doc
- 数据库应用技术—SQL Server 2005篇(第2版).doc
- 数据库应用技术核说明.doc
- 数据库应用教学纲试题与答案.doc
- 数据库应用程序计方法.doc
- 数据库概论试题006(A).doc
- 数据库概论萨师版习题.doc
- 数据库笔试题 答案.doc
- 数据库第2版第章概述.doc
- 数据库第3章上报告.doc
- 2026年及未来5年内中国液体氩气行业投资前景及策略咨询研究报告.docx
- 2026年及未来5年内中国黄铜合页行业投资前景及策略咨询研究报告.docx
- 2026年及未来5年内中国竹工艺家具行业投资前景及策略咨询研究报告.docx
- 2025年中国微机数显自动分析仪市场调查研究报告.docx
- 2026年及未来5年内中国微尘白色粉笔行业投资前景及策略咨询研究报告.docx
- 2025年中国微电脑型压胶机市场调查研究报告.docx
- 2026年及未来5年内中国数字化等功游泳训练测试系统行业投资前景及策略咨询研究报告.docx
- 2025年中国圆形花瓶市场调查研究报告.docx
- 2026年及未来5年内中国植物纤维静淀过滤器行业投资前景及策略咨询研究报告.docx
- 2025年中国超音波手套机市场调查研究报告.docx
最近下载
- 平潭澳海上风电场项目可研收口报告2018年4月版本15工程设计概算表.pdf VIP
- 2024年常州信息职业技术学院单招职业技能测试题库(历年真题).docx VIP
- 腹膜透析指南(2025年版).docx VIP
- 党的二十届四中全会PPT课件.ppt VIP
- 产品设计与实训 设计实训.ppt VIP
- 施工现场建筑垃圾减量化专项方案.pdf VIP
- 《数学史》数学的起源.pptx VIP
- 2026年信息科技课标试题及答案.doc VIP
- 本科课件-ArcGIS Engine地理信息系统开发教程(完整).ppt
- 北京通州区2022-2023学年高一下学期期末质量检测英语试卷 含解析.docx VIP
原创力文档

文档评论(0)