数据结构大作业
课 题 名 称
算术表达式计算
专 业 名 称
计算机类
学 生 姓 名
学 号 + 电 话
指 导 教 师
目 录
算术表达式计算
第 章 课题描述
第 章 需求分析
输入的形式
输出形式
基本操作
难点分析
第 章 概要设计
数据结构设计
算法设计
模块分析
(一)函数功能
(二)功能模块
(三)各模块间关系
第 章 详细设计
定义全局队列、栈、变量
完成对表达式的处理
2
强制转换类型
完成后缀表达式的计算并返回值
第 章 测试数据及结果
运行成功后界面
输入正确表达式后
输入不正确格式表达式后
总 结
(一)心得体会
(二)所遇问题及解决方法
附 录
3
摘要:达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。解决
这个问题方法较多,本报告主要介绍其中一种通过对栈的应用来解决该问题的方法。其主要
思路便是先将用户输入的中缀表达式通过一个函数转化为后缀表达式并存入一个队列中,再
由另一个函数将后缀表达式利用栈相关知识计算出最终结果。
第 1 章 课题描述
用运算符和括号将运算对象(常亮、变量和函数等)连接起来的、符合 语言或
语法规则的式子,称为表达式。由于不懂的运算符号具有不同的优先级,同时也要考虑括号 ,
因此,算数表达式的求值不可能严格地从左往右依次计算。表达式的计算是对数据结构中的
栈和队列的综合应用。本课题便是借助栈和队列求解算数表达式对值。
第 2 章 需求分析
本设计程序用 编写,可任意次数实现数的包括括号运算在内的加、减、乘、除法 ,
当输入不符合格式时提示并可以再次输入。
输入的形式
数学表达式,表达式由整数和“、 “、“、“、“(”、“)”组成。
输出形式
表达式的值,提示:“输入数学表达式或者“输入错误,请重新输入:”。
4
基本操作
输入表达式,开始计算,将结果展示在窗口控制台中。
难点分析
括号的处理、乘除的优先级高于加减
第 3 章 概要设计
数据结构设计
任何一个表达式都是由操作符,运算符和界限符组成的。我们用一个栈储存表达式的括
号和运算符,用一个队列储存表达式运算符前后的数值。栈是限定于紧仅在表尾进行插入或
删除操作的线性表。顺序栈的存储结构是利用一组连续的存储单元依次存放自栈底到栈顶的
数据元素。
算法设计
将输入的中缀表达式转化为便于计算机计算的后缀表达式。使用一个工作栈和一个队列 。
其中工作栈称为 ,队列称为 。工作栈 用于存放括号和运算符,队列 用于存放运
算符前后的待计算的数值。
(一)首先置操作数栈为空栈,表达式起始符”为运算符栈的栈底监视元素。
(二)依次读入表达式,若为括号或运算符即进 栈,若是数值则进队列 ,直至整
个表达式结束为止。
(三)最后再将栈 中的运算符入队 ,完成中缀表达式转化为后缀表达式。
模块分析
5
- 1
- 2
- 3
- 4
- 5
- 6
前往页