软件技术基础实验报告实验名称: 表达式计算器 系 别: 通信工程 年 级: 班 级: 学生学号: 学生: 《数据结构》课程设计报告 题目 简易计算表达式的演示[题目要求]要求:实现基本表达式计算的功能输入:数学表达式,表达式由整数和“+”、 “-”、“×”、“/”、“(”、“)”组成输出:表达式的值基本操作:键入表达式,开始计算,计算过程和结果记录在文档中难点:括号的处理、乘除的优先级高于加减1.前言在计算机中,算术表达式由常量、变量、运算符和括号组成
由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行
因而在程序设计时,借助栈实现
算法输入:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)
为简化,规定操作数只能为正整数,操作符为+、-*、/、=,用#表示结束
算法输出:表达式运算结果
算法要点:设置运算符栈和运算数栈辅助分析算符优先关系
在读入表达式的字符序列的同时,完成运算符和运算数的识别处理,以与相应运算
2.概要设计2
1 数据结构设计任何一个表达式都是由操作符,运算符和界限符组成的
我们分别用顺序栈来寄存表达式的操作数和运算符
栈是限定于紧仅在表尾进行插入或删除操作的线性表
顺序栈的存储结构是利用一组连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针 top指示栈顶元素在顺序栈中的位置,base 为栈底指针,在顺序栈中,它始终指向栈底,即top=base 可作为栈空的标记,每当插入新的栈顶元素时,指针 top 增 1,删除栈顶元素时,指针 top 减 1
2 算法设计为了实现算符优先算法
可以使用两个工作栈
一个称为 OPTR,用以寄存运算符,另一个称做 OPND,用以寄存操作数或运算结果
首先置操作数栈为空栈,表达式起始符”#”为运算符栈的栈底元素;2
依次读入表达式,若是操作符即进