2 * Libavl is a library to manage AVL structure to store and organize
3 * everykind of data. You just need to implement function to compare,
4 * to desallocate and to print your structure.
6 * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
7 * Version 2, December 2004
9 * Copyright (C) 2013 Adrien Oliva <adrien.oliva@yapbreak.fr>
11 * Everyone is permitted to copy and distribute verbatim or modified
12 * copies of this license document, and changing it is allowed as long
13 * as the name is changed.
15 * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
16 * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
18 * 0. You just DO WHAT THE FUCK YOU WANT TO.
25 #include "../syslog.h"
28 static int data_cmp(void *a, void *b)
30 int aa = *((int *) a);
31 int bb = *((int *) b);
36 static void data_print(void *d)
38 printf("%p|%d", d, *((int *) d));
41 static void data_delete(void *d)
46 #define MAX_ELEMENT 10000
51 int data[MAX_ELEMENT];
53 unsigned int element_in_tree = 0;
56 unsigned long rand_seed = (unsigned long) time(NULL);
57 ILOG("Random seed: %lu", rand_seed);
60 for (i = 0; i < MAX_ELEMENT; i++) {
67 // Try to allocate a new tree.
68 first = init_dictionnary(data_cmp, data_print, data_delete, NULL);
70 ELOG("Init dictionnary error");
71 return "Init dictionnary error";
76 for (i = 0; i < MAX_ELEMENT; i++) {
77 if (!is_present(first, &(data[i]))) {
80 result = insert_elmt(first, &(data[i]), sizeof(int));
81 if (result != element_in_tree) {
82 ELOG("Wrong result of inserted element");
83 return "Wrong result of inserted element";
89 for (i = 0; i < MAX_ELEMENT; i++) {
90 delete_node(first, &(data[i]));
91 if (is_present(first, &(data[i]))) {
92 ELOG("Data not deleted");
93 return "Data not deleted";