【发布时间】:2013-09-02 11:57:32
【问题描述】:
我了解如何编写不带括号的 java 算法。
- 创建两个堆栈:一个操作数堆栈和一个运算符堆栈。
- 当我们读取一个表达式时,继续在一个中添加运算符,在另一个中添加操作数。
- 具有较低优先级的运算符不能存储在具有较高优先级的运算符上。在这种情况下,我们弹出该运算符并应用于操作数堆栈中的顶部操作数并保留 结果到位。
但如果它涉及像[] or {} or () 这样的括号。评估表达式的逻辑是什么?例如
([12*3] + (8/2)) + (5+5)/(4*2)-3+(7-3)
【问题讨论】:
-
你试过了吗?
-
是的..没有括号我试过了。使用括号逻辑我需要理解..检查了几个旧博客,但无法弄清楚它是如何工作的。
-
Wikipedia 上的“详细算法”和“详细示例”描述了如何处理括号。
-
如果您了解带括号的调车场算法,将其扩展到一种以上的括号应该是微不足道的。只需完全做与括号相同的操作即可。
标签: java algorithm data-structures stack postfix-notation