4,46 → 4,10 |
|
void * mavl_get_ext(struct mavl *t ,const void *search, int mode) |
{ |
|
struct mavlnode *n,/**lastl,*/*last; |
last = NULL; /*lastl=NULL;*/ |
n = t->root; |
while(n){ |
int rc; |
|
rc = t->cmp(search,mavlnode_dataptr(n)); |
|
/*printf("Compare: %s %s = %d\n",c1->key,c2->key, rc);*/ |
|
if (rc==0){ |
return mavlnode_dataptr(n); |
|
} |
|
if (rc<0){ |
if (mode == MAVL_FIND_FIRST) |
last = n; |
if (n->s[0]==NULL){ |
if (last == NULL) |
return NULL; |
return mavlnode_dataptr(last); |
|
} |
n=n->s[0]; |
} |
else{ |
if (mode == MAVL_FIND_LAST) |
last=n; |
|
if(n->s[1]==NULL){ |
if (last == NULL) |
return NULL; |
return mavlnode_dataptr(last); |
|
} |
n=n->s[1]; |
} |
} |
struct mavlnode *n; |
n = mavlnode_get_ext(t,search,mode); |
if (n) |
return mavlnode_dataptr(n); |
return NULL; |
} |
|