算法的 I/p 将是这样的表达式:
a+(-b)
a*-b+c
即标准 C 编译器支持的任何表达式。
现在我已经将输入格式化为标记流,标记包含操作符或操作数的信息。 该算法应该接受它并给我一个我可以计算的后缀表达式。
如果我使用标准转换算法,我无法区分一元运算和二元运算。 就像 a*(-b) 会给我 ab-* ,这会以错误的方式评估。
最佳答案
如果运算符位于表达式的第一位,或位于另一个运算符之后,或位于左括号之后,则它是一元运算符。
您必须在输出字符串中为一元运算符使用其他符号,否则无法在后缀表示法中区分二元和一元变体。
关于c - 处理一元运算符的后缀算法的中缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17254080/