c - C中的通用数据结构

标签 c data-structures binary-search-tree cots

我正在研究创建通用 BST。没有 COTS 没什么特别的,但我正在尝试确定跟踪 void* 类型的最佳方法。这是节点的界面:

typedef struct
{
   void *data;
   struct TreeNode *left;
   struct TreeNode *right;  
} TreeNode;

但是,当我编写添加/删除时,我需要进行比较,因此我需要跟踪“数据”指向的数据类型,对吧?

基本思想是有一个枚举 Node_Type 和一个函数 compareTreeNodes,它接收两个 TreeNode 和枚举作为第三个参数。这将允许该函数确定将 void* 转换为什么。

还有其他/更好的想法吗?

最佳答案

However, when I write add/remove, I'll need to do comparisons, hence I'll need to keep track of the type of data that "data" is pointing to, right?

看看 qsort() 是如何解决这个问题的。它也需要处理任意数据类型。基本上,您通过函数指针将比较委托(delegate)给用户。

关于c - C中的通用数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3933705/

相关文章:

c - 找到所有 m 子序列的最大加权和

c - fork 和 execve 段错误

C++ - 无法从队列中删除元素

c# - 使用 C# 中的字典,将某些自定义类属性用作同一类中另一个属性(形成为值)的唯一键

c - 搜索/删除时出现 2-3 棵树分割错误

python - 生成 n X n 个非同构二元矩阵的算法

c - 将具有未知数量元素的字符串扫描到 C 中的 int 数组

c++ - 我应该使用哪个数组/列表?

java - 在java中获取二叉搜索树的根

algorithm - 通过扩充 BST 找到二叉搜索树中其值在一定范围内的节点之和