我在写一个计算数值的计算器 从表达式:
3+(23/24)*34/24
我使用RPN算法:https://en.wikipedia.org/wiki/Reverse_Polish_notation
我现在已经在字符串中排序表达式:
3 23 24 / 34 * 24 / +
我不知道如何从这个表达式中得到值。
谢谢
我在写一个计算数值的计算器 从表达式:
3+(23/24)*34/24
我使用RPN算法:https://en.wikipedia.org/wiki/Reverse_Polish_notation
我现在已经在字符串中排序表达式:
3 23 24 / 34 * 24 / +
我不知道如何从这个表达式中得到值。
谢谢
2条答案
按热度按时间ffscu2ro1#
RPN背后的基本思想是,存在一个堆栈,所有参数都被放入其中,然后为某个操作取出。
对于此集合,基本流程为:
| 元素|堆栈|项目a|b.人口基金|
| - ------|- ------|- ------|- ------|
| 按3|三个|||
| 推23|三、二十三|||
| 推动器24|三、二十三、二十四|||
| - 划分||||
| 流行b|三、二十三||二十四|
| 波普阿|三个|二十三|二十四|
| 按a/b|3、0.9583|||
| 端部分水岭||||
| 推动器34|3、0.9583、34|||
| - 乘||||
| 流行b|3、0.9583||三十四|
| 波普阿|三个|0.9583|三十四|
| 按a * b|三、32.5833|||
| 端乘||||
| 推动器24|三、三十二、五八三三、二十四|||
| - 划分||||
| 流行b|三、32.5833||二十四|
| 波普阿|三个|三十二五八三三|二十四|
| 按a/b|3、1.3576|||
| 端部分水岭||||
| 加||||
| 流行b|三个||一点三五七六|
| 波普阿||三个|一点三五七六|
| 按a + b|四点三五七六|||
| 端加||||
解决方案!
nxagd54h2#
基本算法基于堆栈式结构
对于表达式中的每个标记:
例如:
堆栈中保留的最后一个值是结果