xref: /plan9/sys/include/avl.h (revision c54d4d90799b213ecb7bf465d0346e0b05408cc3)
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);
27