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.
|
* Searches a tree by key.
|
||||||
*/
|
*/
|
||||||
rbnode* rbtree_search(rbtree *tree, const void *key) {
|
void* rbtree_search(rbtree *tree, const void *key) {
|
||||||
|
|
||||||
rbnode *n;
|
rbnode *n;
|
||||||
|
|
||||||
|
|
@ -99,12 +99,11 @@ rbnode* rbtree_search(rbtree *tree, const void *key) {
|
||||||
int cmp = tree->cmp_fn(n->key, key);
|
int cmp = tree->cmp_fn(n->key, key);
|
||||||
|
|
||||||
if (cmp == 0)
|
if (cmp == 0)
|
||||||
break;
|
return (void *) n->key;
|
||||||
|
|
||||||
n = n->child[cmp < 0];
|
n = n->child[cmp < 0];
|
||||||
}
|
}
|
||||||
|
return NULL;
|
||||||
return n;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rbtree_walk(rbtree *tree, void (*action)(rbnode *)) {
|
void rbtree_walk(rbtree *tree, void (*action)(rbnode *)) {
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ typedef struct {
|
||||||
|
|
||||||
int rbtree_is_empty(rbtree *tree);
|
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 *));
|
void rbtree_walk(rbtree *tree, void (*action)(rbnode *));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -150,7 +150,7 @@ void test_search() {
|
||||||
|
|
||||||
int index;
|
int index;
|
||||||
|
|
||||||
rbnode *n;
|
int *n;
|
||||||
|
|
||||||
do
|
do
|
||||||
index = rand() % NODES;
|
index = rand() % NODES;
|
||||||
|
|
@ -162,8 +162,7 @@ void test_search() {
|
||||||
n = rbtree_search(&tree, &keyref[index]);
|
n = rbtree_search(&tree, &keyref[index]);
|
||||||
rb_assert(tree.root);
|
rb_assert(tree.root);
|
||||||
|
|
||||||
assert(n != NULL);
|
assert(n == &keyref[index]);
|
||||||
assert(n->key == &keyref[index]);
|
|
||||||
|
|
||||||
index = MAX_VAL + 512;
|
index = MAX_VAL + 512;
|
||||||
|
|
||||||
|
|
|
||||||
Reference in a new issue