view src/rbtree.h @ 9:abdba37f67a2

Red-black tree in progress. Linked list needs iterators redone, also in progress. Sleepy.
author Eris Caffee <discordia@eldalin.com>
date Fri, 28 Sep 2012 03:08:25 -0500
parents
children 68f85ffc6029
line source
1 #ifndef RBTREE_H_
2 #define RBTREE_H_
4 #include <stddef.h>
5 #include <stdbool.h>
7 struct rbtree;
8 struct rbtree_node;
9 struct rbtree_iterator;
11 struct rbtree * rbtree_new(bool (*le)(void * a, void * b), bool (*eq)(void * a, void * b));
12 void rbtree_delete(struct rbtree * rbtree);
13 void * rbtree_insert(struct rbtree * rbtree, void * data);
14 void * rbtree_search(struct rbtree * rbtree, void * data);
15 void * rbtree_search_iterative(struct rbtree * rbtree, void * data);
16 void * rbtree_minimum(struct rbtree * rbtree);
17 void * rbtree_maximum(struct rbtree * rbtree);
19 void rbtree_walk_inorder(struct rbtree * rbtree, void (*op)(void * data));
20 void rbtree_walk_preorder(struct rbtree * rbtree, void (*op)(void * data));
21 void rbtree_walk_postorder(struct rbtree * rbtree, void (*op)(void * data));
23 struct rbtree_iterator * rbtree_begin(struct rbtree * rbtree);
24 struct rbtree_iterator * rbtree_end(struct rbtree * rbtree);
25 struct rbtree_iterator * rbtree_next(struct rbtree_iterator * it);
26 struct rbtree_iterator * rbtree_prev(struct rbtree_iterator * it);
27 void * rbtree_value(struct rbtree_iterator * it);
28 void * rbtree_find(struct rbtree_iterator * it, void * data);
29 void * rbtree_remove(struct rbtree_iterator * it);
31 #endif