如何检查给定表达式是中缀表达式、后缀表达式还是前缀表达式?
How can I check whether the given expression is an infix expression, postfix expression or prefix expression?
我需要算法来检查给定表达式是中缀、后缀还是前缀表达式。
我已经通过检查字符串的第一个或最后两个术语尝试了一种方法,例如
+AB if there is an operator in the very first index of string then its a prefix
AB+ if there is an operator in the very last index of string then its
a postfix
else it is an infix.
但是感觉不合适所以请建议我一个更好的算法。
- 如果它以有效的中缀运算符开头,它就是中缀,除非您打算允许一元运算符。
- 如果它以有效的后缀运算符结尾,它就是后缀。
- 否则为中缀或无效。
请注意,(3) 包括您在括号中表达式的注释中提到的情况。前缀或后缀中没有括号。这就是它们存在的原因。 (3) 还包括单项的退化情况,例如1
,但在那种情况下,您如何解析它并不重要。
您只能通过完全解析来检测无效表达式。
如果您打算在中缀表示法中允许一元运算符,我只能建议您尝试所有三种解析,并在成功时停止。无论如何,这很可能是您应该遵循的策略。
检查字符串中的第一个元素。
1-如果第一个元素是运算符,那么它肯定是前缀表达式
2- else,检查第二个元素,如果是operator,那么肯定是infix
3- 否则,肯定是 postfix
我需要算法来检查给定表达式是中缀、后缀还是前缀表达式。 我已经通过检查字符串的第一个或最后两个术语尝试了一种方法,例如
+AB if there is an operator in the very first index of string then its a prefix
AB+ if there is an operator in the very last index of string then its a postfix
else it is an infix.
但是感觉不合适所以请建议我一个更好的算法。
- 如果它以有效的中缀运算符开头,它就是中缀,除非您打算允许一元运算符。
- 如果它以有效的后缀运算符结尾,它就是后缀。
- 否则为中缀或无效。
请注意,(3) 包括您在括号中表达式的注释中提到的情况。前缀或后缀中没有括号。这就是它们存在的原因。 (3) 还包括单项的退化情况,例如1
,但在那种情况下,您如何解析它并不重要。
您只能通过完全解析来检测无效表达式。
如果您打算在中缀表示法中允许一元运算符,我只能建议您尝试所有三种解析,并在成功时停止。无论如何,这很可能是您应该遵循的策略。
检查字符串中的第一个元素。 1-如果第一个元素是运算符,那么它肯定是前缀表达式 2- else,检查第二个元素,如果是operator,那么肯定是infix 3- 否则,肯定是 postfix