plan9port/include/avl.h

28 lines
644 B
C
Raw Normal View History

2009-08-23 16:38:29 +00:00
/* #pragma lib "libavl.a" */
/* #pragma src "/sys/src/libavl" */
AUTOLIB(avl)
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*));