AVL_INSERT(3AVL) | AVL Tree Library Functions | AVL_INSERT(3AVL) |
avl_insert
,
avl_insert_here
— insert
items into an AVL tree
AVL Tree Library (libavl, -lavl)
#include <sys/avl.h>
void
avl_insert
(avl_tree_t *tree,
void *new, avl_index_t
where);
void
avl_insert_here
(avl_tree_t
*tree, void *new, void
*here, int direction);
The
avl_insert
()
and avl_insert_here
() functions are used to add the
entry new to the tree rooted at
tree.
The
avl_insert
()
function uses the where value, obtained from a call to
avl_find(3AVL), to determine
where to insert the new entry into the tree. The tree must not have been
modified in between the call to
avl_find(3AVL) and the call to
avl_insert
(). If callers are not using
avl_find(3AVL) to validate the
presence of new in the tree and only immediately
insert it, then avl_add(3AVL) may
be used instead.
The
avl_insert_here
()
function is for consumers who are keeping track of recently accessed data
and wish to avoid an additional call to
avl_find(3AVL). The new entry,
new, will be inserted starting at the node
here, which must already exist in the tree. To insert
the node in the tree before here, then the argument
direction should have the value
AVL_BEFORE
. Otherwise, to indicate that the new
entry should be inserted after here, then
direction should be set to
AVL_AFTER
. It is illegal to set
direction to anything other than
AVL_BEFORE
or AVL_AFTER
. If
this is done, the behavior is not defined.
See the EXAMPLES section in libavl(3LIB).
See Locking in libavl(3LIB).
May 7, 2015 | OmniOS |