Blob


1 /* #pragma lib "libavl.a" */
2 /* #pragma src "/sys/src/libavl" */
4 AUTOLIB(avl)
6 typedef struct Avl Avl;
7 typedef struct Avltree Avltree;
8 typedef struct Avlwalk Avlwalk;
10 /* #pragma incomplete Avltree */
11 /* #pragma incomplete Avlwalk */
13 struct Avl
14 {
15 Avl *p; /* parent */
16 Avl *n[2]; /* children */
17 int bal; /* balance bits */
18 };
20 Avl *avlnext(Avlwalk *walk);
21 Avl *avlprev(Avlwalk *walk);
22 Avlwalk *avlwalk(Avltree *tree);
23 void deleteavl(Avltree *tree, Avl *key, Avl **oldp);
24 void endwalk(Avlwalk *walk);
25 void insertavl(Avltree *tree, Avl *new, Avl **oldp);
26 Avl *lookupavl(Avltree *tree, Avl *key);
27 Avltree *mkavltree(int(*cmp)(Avl*, Avl*));