我正在研究创建通用 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/