c++ - 什么是处理 bool 代数方程的良好数据结构?

标签 c++ data-structures user-input mathematical-expressions boolean-algebra

我正在创建一个程序来计算 bool 代数方程的真值。我需要找到一个好的数据结构,能够正确处理涉及 AND、OR、NOT 和括号的方程式的运算顺序。方程式将由用户输入。

最佳答案

任何类型的“操作顺序”对象通常保存在 trees 中.它看起来像这样:

  • 您首先处理文本表示以找到最高优先级的项目
  • 每个简单的语句(例如true OR false)将被放入一个节点
  • 您可以针对不同的操作使用不同类型的节点
  • 节点本身可以​​插入到其他节点中,以进行复杂的陈述

最终的树表示可能最终看起来像这样:

     OR
  ___|__
  |    |
true  AND
    ___|___
    |     |
 false   NOT
          |
         true

这将代表声明:

true OR (false AND NOT true)

关于c++ - 什么是处理 bool 代数方程的良好数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22307845/

相关文章:

线性内存缓冲区的 C++ 接口(interface)

java - 获取所有重复项

java - 数组不会输出数字总数

javascript - 如果对象内容是用户生成的,如何正确转义对象的 JSON 字符串?

c++ - 内联函数(C++)是高效的,为什么我们不把每个函数都定义为内联函数呢?

c++ - 有没有用 Luabridge 向 Lua 公开 sf::Event 的好方法?

data-structures - 具有任意长度数据作为键的类似 map 的功能性数据结构?

java - Integer.parseInt(scanner.nextLine()) 与 scanner.nextInt()

c++ - 创建 C++ 单例实例是否安全?

c++ - 简单乘以 float 1000 * 0.01 = 9 的舍入错误