ref: 75186be2c2aa5566f3c490e087c24e12c872216e
dir: /sys/include/avl.h/
#pragma lib "libavl.a" #pragma src "/sys/src/libavl" typedef struct Avl Avl; typedef struct Avltree Avltree; typedef struct Avlwalk Avlwalk; #pragma incomplete Avltree #pragma incomplete Avlwalk struct Avl { Avl *p; /* parent */ Avl *n[2]; /* children */ int bal; /* balance bits */ }; Avl *avlnext(Avlwalk *walk); Avl *avlprev(Avlwalk *walk); Avlwalk *avlwalk(Avltree *tree); void deleteavl(Avltree *tree, Avl *key, Avl **oldp); void endwalk(Avlwalk *walk); void insertavl(Avltree *tree, Avl *new, Avl **oldp); Avl *lookupavl(Avltree *tree, Avl *key); Avltree *mkavltree(int(*cmp)(Avl*, Avl*)); Avl* searchavl(Avltree *tree, Avl *key, int neighbor);