-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrb_tree.h
More file actions
executable file
·34 lines (26 loc) · 1.06 KB
/
rb_tree.h
File metadata and controls
executable file
·34 lines (26 loc) · 1.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef RB_TREE_H
#define RB_TREE_H
#include <stddef.h>
/* Opaque types */
typedef struct rb_tree rb_tree_t;
typedef struct rb_trav rb_trav_t;
/* User-defined item handling */
typedef int (*cmp_f) ( const void *p1, const void *p2 );
typedef void *(*dup_f) ( void *p );
typedef void (*rel_f) ( void *p );
/* Red Black tree functions */
rb_tree_t *rb_new ( cmp_f cmp, dup_f dup, rel_f rel);
void rb_delete ( rb_tree_t *tree );
void *rb_find ( rb_tree_t *tree, void *data );
void *rb_find_GLT(rb_tree_t *tree, void *data, void* curr_high);
int rb_insert ( rb_tree_t *tree, void *data );
int rb_erase ( rb_tree_t *tree, void *data );
size_t rb_size ( rb_tree_t *tree );
/* Traversal functions */
rb_trav_t *rb_tnew ( void );
void rb_tdelete ( rb_trav_t *trav );
void *rb_tfirst ( rb_trav_t *trav, rb_tree_t *tree );
void *rb_tlast ( rb_trav_t *trav, rb_tree_t *tree );
void *rb_tnext ( rb_trav_t *trav );
void *rb_tprev ( rb_trav_t *trav );
#endif