我必须编写一个程序,将中缀转换为后缀,然后计算后缀表达式。我已经完成了转换部分。但是我对评估部分有点困惑。计算表达式的方法采用后缀表达式的链表表示形式。这让我有点困惑。该方法的标头如下所示:
public static String evaluatePostfix(StringList postfix)
那么,我是否必须遍历链表并对其进行评估?
提前谢谢。
是的,您需要迭代链表并对其进行评估。计算后缀表达式的经典方法是使用堆栈。算法如下:
- 对于列表中的每个元素,检查其类型
- 如果元素表示一个数字,请将其推送到堆栈上 如果元素是操作,则根据操作
- 的类型从堆栈中弹出一个或两个元素,执行操作,然后将结果推回堆栈
- 循环结束后,堆栈上将有一个元素;这就是你的结果。
如果在任何时候您的操作在堆栈上找不到足够的参数,则正在计算的表达式无效。当堆栈在循环完成时没有一个元素的情况也是如此。