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