-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathavl_tree.h
49 lines (40 loc) · 1.29 KB
/
avl_tree.h
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdbool.h>
#ifndef _AVL_TREE_H_
#define _AVL_TREE_H_
typedef struct AVLNode
{
void *data;
struct AVLNode *left;
struct AVLNode *right;
int height;
} AVLNode;
typedef struct AVLNodeDataOps
{
void *(*cp)(const void *data);
void (*free)(void *data);
bool (*eq)(const void *data1, const void *data2);
int (*compare)(const void *data1, const void *data2);
void (*print)(const void *data);
} AVLNodeDataOps;
typedef struct AVLTree
{
struct AVLNode *head;
AVLNodeDataOps data_ops;
} AVLTree;
extern AVLTree *create_AVLTree(AVLNodeDataOps data_ops);
extern bool contains_AVLTree(AVLTree *tree, const void *data);
extern AVLNode *insert_AVLTree(AVLTree *tree, AVLNode *node, const void *data, int recurseCount);
extern void deleteValue_AVLTree(AVLTree *tree, const void *data);
void *string_cp(const void *data);
bool string_eq(const void *data1, const void *data2);
int string_compare(const void *data1, const void *data2);
void string_free(void *data);
void string_print(const void *data);
void *int_cp(const void *data);
bool int_eq(const void *data1, const void *data2);
int int_compare(const void *data1, const void *data2);
void int_free(void *data);
void int_print(const void *data);
extern AVLNodeDataOps data_ops_string;
extern AVLNodeDataOps data_ops_int;
#endif