Advertisement

java完成解析数学算式计算器三——用栈解析

阅读量:

一、程序要求

解析一般数学算式,实现简单的带括号的加减乘除运算。

二、基本思路

前面两篇讲述了直接解析字符串以及借助数组容器辅助进行解析的两种方法。本次将介绍最常采用的解析方法——分析后缀表达式(逆波兰表示法)。

三、逆波兰表达式及其得到算法

1、逆波兰表达式

即为后缀表达式亦称逆波兰式 是一种不含括号的操作方式 将运算符置于两个操作数之后 按照运算符出现顺序从左至右依次执行 不受传统运算符优先级影响。(摘自百度) 即使取消了传统的运算符优先级 这样一来计算机解析起来就更加便捷了。

我们通常遇到的算术运算符组合称为中置算术表 达 式 ,每个这样的 中 置 表 达 式 都 对应着一 种 唯一 的 后 置 表 达 式 。例如 :

其对应的 后 置 表 达 式 则为 :

而在解析后缀表达式时,只需要遵守以下原则即可:

  • 从左到右地依次处理每个元素
  • 当遇到一个数字时,则将其直接添加至容器
  • 每当遇到一个运算符时,则取出最后两个已处理的数值进行计算,并将结果返回至容器中
  • 完成整个遍历过程后,容器中所积累的所有数值即构成最终得到的结果

遵循这一系列步骤后, 自然不假思索地想到使用栈是最合适的选择.

2、由中缀表达式得到后缀表达式的算法

由中缀表达式得到后缀表达式,只要遵守以下步骤即可:

全部评论 (0)

还没有任何评论哟~