2

我需要检查给定表达式是中缀、后缀还是前缀表达式的算法。我通过检查字符串的第一个或最后两个术语尝试了一种方法,例如

+AB 如果字符串的第一个索引中有一个运算符,那么它是一个前缀

AB+ 如果字符串的最后一个索引中有一个运算符,那么它是一个后缀

否则它是一个中缀。

但这感觉不合适,所以请建议我一个更好的算法。

4

2 回答 2

1
  1. 如果它以有效的中缀运算符开头,则它是中缀,除非您要允许一元运算符。
  2. 如果它以有效的后缀运算符结尾,则它是后缀。
  3. 否则,它要么是中缀要么是无效的。

请注意,(3)包括您在括号中表达式的注释中提到的情况。前缀或后缀中没有括号。这就是它们存在的原因。(3) 还包括单个术语的退化情况,例如1,但在这种情况下,您如何解析它并不重要。

您只能通过完全解析来检测无效表达式。

如果您要允许使用中缀表示法的一元运算符,我只能建议您尝试所有三种解析并在成功时停止。很可能这是您无论如何都应该遵循的策略。

于 2016-10-06T00:55:48.280 回答
0

检查字符串中的第一个元素。1-如果第一个元素是运算符,那么肯定是前缀表达式 2-否则,检查第二个元素,如果是运算符,那么肯定是中缀 3-否则,肯定是后缀

于 2021-12-10T23:56:10.360 回答