libavl: import from Plan 9
This commit is contained in:
parent
da0a205ed6
commit
375b78fb11
4 changed files with 570 additions and 0 deletions
27
include/avl.h
Normal file
27
include/avl.h
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
/* #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*));
|
||||
Loading…
Add table
Add a link
Reference in a new issue