AVL_DESTROY_NODES(3AVL) | AVL Tree Library Functions | AVL_DESTROY_NODES(3AVL) |
avl_destroy_nodes
—
efficiently remove nodes from an AVL tree
AVL Tree Library (libavl, -lavl)
#include <sys/avl.h>
void *
avl_destroy_nodes
(avl_tree_t
*tree, void **cookie);
The
avl_destroy_nodes
()
function is used to efficiently remove nodes from the AVL tree rooted at
tree.
After the
avl_destroy_nodes
()
function is called on an AVL tree, the only valid functions that may be
called on it are additional calls to
avl_destroy_nodes
() and finally
avl_destroy
().
Before calling
avl_destroy_nodes
(),
callers must first initialize a value of type void *
to NULL and pass a pointer to it as the argument
cookie. This is an opaque value that will be used to
maintain where to next delete items from the tree. Callers should never
modify it after initializing it. After each call to
avl_destroy_nodes
(), cookie
will be updated and must be passed to subsequent calls to
avl_destroy_nodes
().
Each time
avl_destroy_nodes
()
is called, it will return a pointer to an object that had previously been
inserted into the tree, allowing a caller the opportunity to delete or clean
it up. Once avl_destroy_nodes
() returns a
NULL pointer, then the tree is empty and the caller should
proceed to call
avl_destroy(3AVL).
The examples in libavl(3LIB) demonstrate the correct usage of this interface.
The avl_destroy_nodes
() function will
return a pointer to the object just removed from the tree rooted at
tree and if tree is empty, it
will return NULL.
See the EXAMPLES section in libavl(3LIB).
See Locking in libavl(3LIB).
December 3, 2015 | OmniOS |