AVL_FIRST(3AVL) | AVL Tree Library Functions | AVL_FIRST(3AVL) |

`avl_first`

,
`AVL_NEXT`

, `AVL_PREV`

,
`avl_last`

— get the first,
next, previous, and last entries from an AVL tree

AVL Tree Library (libavl, -lavl)

`#include <sys/avl.h>`

`void *`

`avl_first`

(`avl_tree_t *tree`);

`void *`

`avl_last`

(`avl_tree_t *tree`);

`void *`

`AVL_NEXT`

(`avl_tree_t *tree`,
`void *node`);

`void *`

`AVL_PREV`

(`avl_tree_t *tree`,
`void *node`);

The
`avl_first`

()
and
`avl_last`

()
respectively return the first and last entry in the tree specified by
`tree`. Order in the tree is determined by the
comparison function that was specified at the time the tree was created with
avl_create(3AVL). If
`tree` is empty, then
`avl_first`

() and `avl_last`

()
return **NULL**.

The
`AVL_NEXT`

()
and
`AVL_PREV`

()
functions are macros that may be used to obtain the next and previous entry
following `node` in the AVL tree
`tree`. If there is no next or previous node, for
example, if one was at the beginning or end of the tree, then
**NULL** is returned.

These constructs are generally used as part of loops to iterate the tree. See the examples section in libavl(3LIB) for more information on using this interface.

The `avl_first`

() function returns a pointer
to the first entry in the AVL tree `tree` or
**NULL** if the AVL tree is empty.

The `avl_last`

() function returns a pointer
to the last entry in the AVL tree `tree` or
**NULL** if the AVL tree is empty.

The `AVL_NEXT`

() macro returns a pointer to
the object in the tree that follows `node`. If
`node` is the last entry in the tree,
**NULL** is returned instead.

The `AVL_PREV`

() macro returns a pointer to
the object in the tree that precedes `node`. If
`node` is the first entry in the tree,
**NULL** is returned instead.

See the **EXAMPLES** section in
libavl(3LIB).

See Locking in libavl(3LIB).

May 7, 2015 | OmniOS |