From 375b78fb110b7e1dd3686bc43aba38cf45c606e9 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sun, 23 Aug 2009 09:38:29 -0700 Subject: libavl: import from Plan 9 --- include/avl.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 include/avl.h (limited to 'include') diff --git a/include/avl.h b/include/avl.h new file mode 100644 index 00000000..d118ffd1 --- /dev/null +++ b/include/avl.h @@ -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*)); -- cgit v1.2.3