【发布时间】:2019-12-09 05:29:06
【问题描述】:
我有一个这个数据结构的数组:
typedef struct {
unsigned long id; // Node identification
char *name;
double lat, lon; // Node position
} node;
我想通过 id 进行二分搜索。 我尝试像这样定义函数
unsigned long bi_search(unsigned long *Vector, unsigned long Vlen, unsigned long target) {
imin = 0; imax = Vlen-1;
while (imax > imin) {
imid = (imax + imin)/2;
if (Vector[imid] == target) {
return imid;
}
else if (Vector[imid] < target) {
imin = imid + 1;
}
else {
imax = imid - 1;
}
}
return -1;
}
然后调用它
bi_search(&nodes->id, nnodes, 0)
该函数适用于矢量,但我无法使其在结构数组中进行搜索。
【问题讨论】:
-
欢迎来到 Stack Overflow。你犯了一个根本性错误:
nodes是指向node数组中第一个元素的指针,&nodes->id是指向node的id成员的指针(这是一个unsigned long) 但它不是指向unsigned long上数组中第一个元素的指针。 -
感谢您的欢迎和您的回答:D 是的,这正是问题所在,您知道如何使其工作。
-
代替
Vector[imid] == target,使用Vector[imid].id == target,同样使用Vector[imid] < target。
标签: c arrays data-structures binary-search