评估后缀表达式

时间:2015-03-14 02:33:06

标签: java linked-list stack

我必须编写一个程序,将中缀转换为后缀,然后计算后缀表达式。我完成了转换部分。但是我对评估部分感到有点困惑。评估表达式的方法采用后缀表达式的链接列表表示。这让我有点困惑。方法的标题如下:

public static String evaluatePostfix(StringList postfix)

那么,我是否必须遍历链表并对其进行评估?

提前致谢。

1 个答案:

答案 0 :(得分:0)

是的,您需要迭代链表并进行评估。评估后缀表达式的经典方法是使用堆栈。算法如下:

  • 对于列表中的每个元素,请检查其类型
  • 如果元素代表一个数字,则将其推入堆栈
  • 如果元素是一个操作,则从堆栈中弹出一个或两个元素,具体取决于操作的类型,执行操作,并将结果推回堆栈
  • 一旦循环结束,堆栈上将会有一个元素;这是你的结果。

如果您的操作在任何时候都无法在堆栈上找到足够的参数,则正在评估的表达式无效。同样适用于在完成循环后堆栈没有一个元素的情况。