rbtree.c: search: return key instead of node.
This commit is contained in:
parent
027bf154a7
commit
3671888b8b
3 changed files with 6 additions and 8 deletions
|
|
@ -86,7 +86,7 @@ inline int rbtree_is_empty(rbtree *tree) {
|
|||
/*
|
||||
* Searches a tree by key.
|
||||
*/
|
||||
rbnode* rbtree_search(rbtree *tree, const void *key) {
|
||||
void* rbtree_search(rbtree *tree, const void *key) {
|
||||
|
||||
rbnode *n;
|
||||
|
||||
|
|
@ -99,12 +99,11 @@ rbnode* rbtree_search(rbtree *tree, const void *key) {
|
|||
int cmp = tree->cmp_fn(n->key, key);
|
||||
|
||||
if (cmp == 0)
|
||||
break;
|
||||
return (void *) n->key;
|
||||
|
||||
n = n->child[cmp < 0];
|
||||
}
|
||||
|
||||
return n;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void rbtree_walk(rbtree *tree, void (*action)(rbnode *)) {
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ typedef struct {
|
|||
|
||||
int rbtree_is_empty(rbtree *tree);
|
||||
|
||||
rbnode* rbtree_search(rbtree *tree, const void *key);
|
||||
void* rbtree_search(rbtree *tree, const void *key);
|
||||
|
||||
void rbtree_walk(rbtree *tree, void (*action)(rbnode *));
|
||||
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ void test_search() {
|
|||
|
||||
int index;
|
||||
|
||||
rbnode *n;
|
||||
int *n;
|
||||
|
||||
do
|
||||
index = rand() % NODES;
|
||||
|
|
@ -162,8 +162,7 @@ void test_search() {
|
|||
n = rbtree_search(&tree, &keyref[index]);
|
||||
rb_assert(tree.root);
|
||||
|
||||
assert(n != NULL);
|
||||
assert(n->key == &keyref[index]);
|
||||
assert(n == &keyref[index]);
|
||||
|
||||
index = MAX_VAL + 512;
|
||||
|
||||
|
|
|
|||
Reference in a new issue