]> git.lizzy.rs Git - plan9front.git/blob - sys/include/avl.h
Import sources from 2011-03-30 iso image - lib
[plan9front.git] / sys / include / avl.h
1 #pragma lib     "libavl.a"
2 #pragma src "/sys/src/libavl"
3
4 typedef struct Avl      Avl;
5 typedef struct Avltree  Avltree;
6 typedef struct Avlwalk  Avlwalk;
7
8 #pragma incomplete Avltree
9 #pragma incomplete Avlwalk
10
11 struct Avl
12 {
13         Avl     *p;             /* parent */
14         Avl     *n[2];          /* children */
15         int     bal;            /* balance bits */
16 };
17
18 Avl     *avlnext(Avlwalk *walk);
19 Avl     *avlprev(Avlwalk *walk);
20 Avlwalk *avlwalk(Avltree *tree);
21 void    deleteavl(Avltree *tree, Avl *key, Avl **oldp);
22 void    endwalk(Avlwalk *walk);
23 void    insertavl(Avltree *tree, Avl *new, Avl **oldp);
24 Avl     *lookupavl(Avltree *tree, Avl *key);
25 Avltree *mkavltree(int(*cmp)(Avl*, Avl*));
26 Avl*    searchavl(Avltree *tree, Avl *key, int neighbor);