view src/rbtree.h @ 10:68f85ffc6029

Finished rbtree. Reworked the iterators in list. Minor tweaks to others.
author Eris Caffee <discordia@eldalin.com>
date Fri, 28 Sep 2012 18:24:53 -0500
parents abdba37f67a2
children d359966ed8de
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);
14 void * rbtree_insert (struct rbtree * rbtree, void * data);
15 void * rbtree_search (struct rbtree * rbtree, void * data);
16 void * rbtree_search_iterative (struct rbtree * rbtree, void * data);
17 void * rbtree_minimum (struct rbtree * rbtree);
18 void * rbtree_maximum (struct rbtree * rbtree);
20 void rbtree_walk_inorder (struct rbtree * rbtree, void (*op)(void * data));
21 void rbtree_walk_preorder (struct rbtree * rbtree, void (*op)(void * data));
22 void rbtree_walk_postorder (struct rbtree * rbtree, void (*op)(void * data));
24 struct rbtree_iterator * rbtree_begin (struct rbtree * rbtree);
25 struct rbtree_iterator * rbtree_end (struct rbtree * rbtree);
26 struct rbtree_iterator * rbtree_next (struct rbtree_iterator * it);
27 struct rbtree_iterator * rbtree_prev (struct rbtree_iterator * it);
28 void * rbtree_find (struct rbtree_iterator * it, void * data);
29 void * rbtree_remove (struct rbtree_iterator * it);
30 void * rbtree_value (struct rbtree_iterator * it);
32 unsigned int rbtree_black_depth(struct rbtree * rbtree);
33 void rbtree_dump(struct rbtree * rbtree, void (*print_val)(void *) );
35 #endif