数据结构课程设计---用两种方式实现表达式自动计算
《数据结构课程设计---用两种方式实现表达式自动计算》由会员分享,可在线阅读,更多相关《数据结构课程设计---用两种方式实现表达式自动计算(17页珍藏版)》请在毕设资料网上搜索。
1、用两种方式实现表达式自动计算 - 1 - 一、设计思想一、设计思想 (一)中缀转后缀的设计思想 设计一个能实现表达式自动求值计算,算术表达式由操作数、算符和括号组成。由于运 算符的优先级不同还要考虑括号。 所以表达式不可能一直的从左到右进行, 所以就借助栈来 实现这个表达式的求值。 首先要把算术表达式变换成与之等值的无括号表达式, 也就是中缀转后缀, 它也是这个 算法的关键。设计两个栈,一个为字符型的,存放运算符,用以将算术表达式变成无括号的 表达式;另一个浮点型的,存放操作数,用以对无符号的表达式进行求值。我们要假设运算 符的优先级:( ) , * /, + - 。首先将一左括号(入栈,作为
2、栈底元素;接着从左到右对算 术表达式进行扫描。每次读一位,若遇到左括号 ( ,则进栈;若遇到的是操作数,则立即 输出;若又遇到运算符,如果它的优先级比栈顶元素的优先级数高的话,则直接进栈,否则 输出栈顶元素, 直到新的栈顶元素的优先级数比它低的, 然后将它压栈; 若遇到是右括号 ) , 则将栈顶的运算符输出,直到栈顶的元素为 ( ,然后,左右括号互相底消;到设计的结束 标志的时候表示表达式已经扫描完毕,表达式已经全部输入,将栈中的运算符全部输出,删 除栈底的左括号。以上完成了中缀表达式转后缀表达式,输出无括号的后缀表达式。 读后缀表达式,若遇数值,操作数进栈;若遇运算符,让操作数栈的栈顶和次栈
3、顶依次 出栈并与此运算符进行运算,运算结果入操作数栈;重复这个步骤,直到遇到结束标志,则 此时栈中的结果便是所求的后缀表达式的值, 接着输出结果。 以上就是设计这个算法的主要 的思想。 (二) 直接计算的设计思想 直接计算其实跟上一个相似,它是在上面扫两遍的思想进行修改的得来。 首先,要建立两个栈,一个为字符型的,存放运算符,另一个浮点型的,存放操作数, 我们开始对表达式进行扫描。首先要确定运算符的优先级: (、 ) 、*、/、+、-。如果扫描到 的是数字符号,把它们转换成浮点型数据或其他可运算的数据类型,存入操作数栈中。如果 扫描到的是运算符号,第一个运算符进栈,遇到 (存入运算符栈中,我们
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中设计图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 用两种 方式 实现 表达式 自动 计算
