plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

avl.h (644B)


      1 /* #pragma	lib	"libavl.a" */
      2 /* #pragma src "/sys/src/libavl" */
      3 
      4 AUTOLIB(avl)
      5 
      6 typedef struct Avl	Avl;
      7 typedef struct Avltree	Avltree;
      8 typedef struct Avlwalk	Avlwalk;
      9 
     10 /* #pragma incomplete Avltree */
     11 /* #pragma incomplete Avlwalk */
     12 
     13 struct Avl
     14 {
     15 	Avl	*p;		/* parent */
     16 	Avl	*n[2];		/* children */
     17 	int	bal;		/* balance bits */
     18 };
     19 
     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*));