模拟两个栈,一个放数值,称为A,一个放运算符,称为B。
B的运算符优先级必须递增的。
一开始先在运算符里放一个优先级为-1的符号(#)。
然后依次扫描,遇到数字就放到A里,遇到运算符,则有以下情况:
1.当前运算符是(,则无条件入栈。
2.当前运算符优先级>栈尾运算符的优先级,则入栈。
3.当前运算符优先级<栈尾运算符的优先级,则取出栈尾的运算符和A栈尾的两个元素,进行运算,然后把答案放入A中。不停重复上述操作直到当前运算符>栈尾运算符。
运算符的优先级:
#:-1
(:无条件入栈
+,-:1,不过先进栈者优先级更大
*:2
):0,不过遇到左括号则两者全部抵消。
[[it] 本帖最后由 multiple1902 于 2008-9-7 21:30 编辑 [/it]]
4.PNG
(133.91 KB)
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
5.PNG
(161.17 KB)
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
6.PNG
(113.03 KB)
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
7.PNG
(142.78 KB)
图片附件: 游客没有浏览图片的权限,请
登录 或
注册