计算后缀表达式



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

public static String evaluatePostfix(StringList postfix)

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

提前谢谢。

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

  • 对于列表中的每个元素,检查其类型
  • 如果元素表示一个数字,请将其推送到堆栈上
  • 如果元素是操作,则根据操作
  • 的类型从堆栈中弹出一个或两个元素,执行操作,然后将结果推回堆栈
  • 循环结束后,堆栈上将有一个元素;这就是你的结果。

如果在任何时候您的操作在堆栈上找不到足够的参数,则正在计算的表达式无效。当堆栈在循环完成时没有一个元素的情况也是如此。

相关内容

最新更新