summaryrefslogtreecommitdiff
path: root/sys/include
diff options
context:
space:
mode:
authorspew <devnull@localhost>2016-12-22 16:47:41 -0600
committerspew <devnull@localhost>2016-12-22 16:47:41 -0600
commit0885ed1e8098c7f1cd54ff528d1b5b56d670e756 (patch)
treecdfa84e209da747006bfcb43404f1251ac78e0fb /sys/include
parent3bf89ed825835b574c3d1c7f640918e65aac488d (diff)
alv(2): new avl implementation
Diffstat (limited to 'sys/include')
-rw-r--r--sys/include/avl.h37
1 files changed, 17 insertions, 20 deletions
diff --git a/sys/include/avl.h b/sys/include/avl.h
index 242ee1ba3..49b61fbb6 100644
--- a/sys/include/avl.h
+++ b/sys/include/avl.h
@@ -1,26 +1,23 @@
-#pragma lib "libavl.a"
+#pragma lib "libavl.a"
#pragma src "/sys/src/libavl"
-typedef struct Avl Avl;
-typedef struct Avltree Avltree;
-typedef struct Avlwalk Avlwalk;
+typedef struct Avl Avl;
+typedef struct Avltree Avltree;
-#pragma incomplete Avltree
-#pragma incomplete Avlwalk
+struct Avl {
+ Avl *c[2];
+ Avl *p;
+ schar balance;
+};
-struct Avl
-{
- Avl *p; /* parent */
- Avl *n[2]; /* children */
- int bal; /* balance bits */
+struct Avltree {
+ int (*cmp)(Avl*, Avl*);
+ Avl *root;
};
-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);
+Avltree *avlcreate(int(*cmp)(Avl*, Avl*));
+Avl *avllookup(Avltree*, Avl*);
+Avl *avldelete(Avltree*, Avl*);
+Avl *avlinsert(Avltree*, Avl*);
+Avl *avlnext(Avl*);
+Avl *avlprev(Avl*);