我正在使用二叉搜索树数据结构对一系列类型为以下定义的结构体进行排序:
typedef struct {
char c;
int index;
} data_t;
typedef struct node node_t;
typedef node {
void *data;
node_t *left;
node_t *right;
}
node_t是一个typedef,来自于我为此目的提供的库,假定使用void*指针以确保多态性。node
将被传递到以下函数中:
static void
*recursive_search_tree(node_t *root, void *key, int cmp(void*,void*))
在recursive_search_tree函数内部,我想修改代码,使用索引元素作为条件来查找最接近线性遍历字符数组索引的匹配项,这最终涉及将数据传递到*key
,并在函数中访问key->index
。
问题
是否有可能访问key->index
,其中key是指向data_t
结构体的void*
指针?还是只有当将data_t
声明为key的类型时才可能实现?我已经尝试了后者,但即使将指针转换为int,编译器似乎也无法通过。