c - 处理一元运算符的后缀算法的中缀

标签 c algorithm shunting-yard

算法的 I/p 将是这样的表达式:

a+(-b)
a*-b+c

即标准 C 编译器支持的任何表达式。

现在我已经将输入格式化为标记流,标记包含操作符或操作数的信息。 该算法应该接受它并给我一个我可以计算的后缀表达式。

如果我使用标准转换算法,我无法区分一元运算和二元运算。 就像 a*(-b) 会给我 ab-* ,这会以错误的方式评估。

最佳答案

如果运算符位于表达式的第一位,位于另一个运算符之后,位于左括号之后,则它是一元运算符。

您必须在输出字符串中为一元运算符使用其他符号,否则无法在后缀表示法中区分二元和一元变体。

关于c - 处理一元运算符的后缀算法的中缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17254080/

相关文章:

java - 调车场功能

c++ - 无法从 'void' 转换为 'Token' (C++)

检查路径是文件还是目录

algorithm - 选择算法找到中位数,元素向左和向右

c - 向前移动和矩阵中的索引

c++ - 圆形无锁缓冲区

python - 调车场算法中复杂的表达式导致计算器错误

c - 在 Windows 7 x64 上安装 GCC Make

c - Jansson C 解析器库中缺少库 "jansson_private_config.h"

用 gcc 编译 .c