Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#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);