Changeset 296

Show
Ignore:
Timestamp:
11/09/99 18:28:25 (14 years ago)
Author:
ucacoxh
Message:

- Added btree_get_max_key and btree_get_element_count.

Location:
common/trunk/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • common/trunk/src/btree.c

    r282 r296  
    2828struct s_btree { 
    2929        btree_node_t   *root; 
     30        int             cnt; 
    3031}; 
    3132 
     
    4243        while(x->left) { 
    4344                x = x->left; 
     45        } 
     46        return x; 
     47} 
     48 
     49static btree_node_t* 
     50btree_max(btree_node_t *x) 
     51{ 
     52        if (x == NULL) { 
     53                return NULL; 
     54        } 
     55        while(x->right) { 
     56                x = x->right; 
    4457        } 
    4558        return x; 
     
    148161        if (t) { 
    149162                t->root = NULL; 
     163                t->cnt  = 0; 
    150164                *tree = t; 
    151165                return TRUE; 
     
    197211        x->parent = x->left = x->right = NULL; 
    198212        btree_insert_node(tree, x); 
     213        tree->cnt++; 
    199214 
    200215        return TRUE; 
     
    223238        x = btree_delete_node(tree, x); 
    224239        xfree(x); 
     240        tree->cnt--; 
    225241 
    226242        return TRUE; 
     
    245261} 
    246262 
     263int  
     264btree_get_max_key(btree_t *tree, u_int32 *key) 
     265{ 
     266        btree_node_t *x; 
     267 
     268        if (tree->root == NULL) { 
     269                return FALSE; 
     270        } 
     271 
     272        x = btree_max(tree->root); 
     273        if (x == NULL) { 
     274                return FALSE; 
     275        } 
     276         
     277        *key = x->key; 
     278        return TRUE; 
     279} 
     280 
    247281int 
    248282btree_get_next_key(btree_t *tree, u_int32 cur_key, u_int32 *next_key) 
     
    262296        *next_key = x->key; 
    263297        return TRUE; 
     298} 
     299 
     300int  
     301btree_get_element_count(btree_t *tree) 
     302{ 
     303        return tree->cnt; 
    264304} 
    265305 
  • common/trunk/src/btree.h

    r282 r296  
    5353 
    5454int btree_get_min_key (btree_t *tree, u_int32 *key); 
     55int btree_get_max_key (btree_t *tree, u_int32 *key); 
    5556 
    5657/* btree_get_next_key attempts to get the key above cur_key.  Returns        */ 
     
    5960int btree_get_next_key (btree_t *tree, u_int32 cur_key, u_int32 *next_key); 
    6061 
     62/* btree_get_element_count returns numver of nodes on tree                   */ 
     63int btree_get_element_count(btree_t *tree); 
     64 
    6165#endif /* __BTREE_H__ */ 
    6266