如何检查给定表达式是中缀表达式,后缀表达式还是前缀表达式?

时间:2016-10-03 01:51:01

标签: c++ postfix-notation infix-notation prefix-notation

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

  

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

     

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

     

否则它是中缀。

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

1 个答案:

答案 0 :(得分:1)

  1. 如果它以有效的中缀运算符开头,那么它是中缀,除非您允许一元运算符。
  2. 如果它以有效的后缀运算符结束,则为后缀。
  3. 否则为中缀或无效。
  4. 请注意,(3)包括您在括号中的表达式的注释中提到的情况。前缀或后缀中没有括号。这就是他们存在的原因。 (3)还包括单个术语的简并情况,例如: 1,但在这种情况下,解析它并不重要。

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

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