我正在阅读 C 中的 kd 树实现。这是其中的一些部分。问题出在 findmedian 函数中。我不明白
的实现*md = start +(end-start)/2;
...... -> 其他不相关的代码行
struct kd_node_t
{
double x[3];
struct kd_node_t *left, *right;
};
struct kd_node_t* findmedian(struct kd_node_t *start, struct kd_node_t *end, int idx)
{
......
struct kd_node_t *p, *store, *md = start + (end - start) / 2;
......
}
最佳答案
嗯,这里实现的只是“两个指针之间的中间位置”start
和end
。如果实现注意内存中的这个位置有一个有意义的值(可能是中位数)那么你很幸运,否则你会得到垃圾......
关于c - KD 树 - 理解指针的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16175338/