Blame src/avl/test.c

Packit Service 102f81
#include <stdio.h>
Packit Service 102f81
#include "avl.h"
Packit Service 102f81
Packit Service 102f81
#ifdef _WIN32
Packit Service 102f81
#define snprintf _snprintf
Packit Service 102f81
#endif
Packit Service 102f81
Packit Service 102f81
int _compare(void *compare_arg, void *a, void *b);
Packit Service 102f81
int _free(void *key);
Packit Service 102f81
int _printer(char *buff, void *key);
Packit Service 102f81
Packit Service 102f81
int main(int argc, char **argv)
Packit Service 102f81
{
Packit Service 102f81
    int i, max_nodes;
Packit Service 102f81
    avl_tree *tree;
Packit Service 102f81
    avl_node *node;
Packit Service 102f81
Packit Service 102f81
    max_nodes = 25;
Packit Service 102f81
Packit Service 102f81
    if (argc == 2) {
Packit Service 102f81
        max_nodes = atoi(argv[1]);
Packit Service 102f81
        if (max_nodes == 0)
Packit Service 102f81
            max_nodes = 10;
Packit Service 102f81
    }
Packit Service 102f81
Packit Service 102f81
    printf("avl test... max_nodes = %d...\n", max_nodes);
Packit Service 102f81
Packit Service 102f81
    tree = avl_tree_new(_compare, NULL);
Packit Service 102f81
Packit Service 102f81
    printf("Filling tree...\n");
Packit Service 102f81
    for (i = 0; i < max_nodes; i++) {
Packit Service 102f81
        avl_insert(tree, (void *)rand());
Packit Service 102f81
    }
Packit Service 102f81
    
Packit Service 102f81
    printf("Traversing tree...\n");
Packit Service 102f81
    node = avl_get_first(tree);
Packit Service 102f81
    while (node) {
Packit Service 102f81
        i = (int)node->key;
Packit Service 102f81
Packit Service 102f81
        printf("...%5d\n", i);
Packit Service 102f81
Packit Service 102f81
        node = avl_get_next(node);
Packit Service 102f81
    }
Packit Service 102f81
Packit Service 102f81
    printf("Trying to go backwards...\n");
Packit Service 102f81
    node = tree->root->right;
Packit Service 102f81
    while (node) {
Packit Service 102f81
        i = (int)node->key;
Packit Service 102f81
        printf("...%5d\n", i);
Packit Service 102f81
        node = avl_get_prev(node);
Packit Service 102f81
    }
Packit Service 102f81
Packit Service 102f81
    printf("Printing tree...\n");
Packit Service 102f81
    avl_print_tree(tree, _printer);
Packit Service 102f81
Packit Service 102f81
    avl_tree_free(tree, _free);
Packit Service 102f81
    
Packit Service 102f81
    return 0;
Packit Service 102f81
}
Packit Service 102f81
Packit Service 102f81
int _compare(void *compare_arg, void *a, void *b)
Packit Service 102f81
{
Packit Service 102f81
    int i, j;
Packit Service 102f81
Packit Service 102f81
    i = (int)a;
Packit Service 102f81
    j = (int)b;
Packit Service 102f81
Packit Service 102f81
    if (i > j)
Packit Service 102f81
        return 1;
Packit Service 102f81
    if (j > i)
Packit Service 102f81
        return -1;
Packit Service 102f81
    return 0;
Packit Service 102f81
}
Packit Service 102f81
Packit Service 102f81
int _free(void *key) 
Packit Service 102f81
{
Packit Service 102f81
    return 1;
Packit Service 102f81
}
Packit Service 102f81
Packit Service 102f81
int _printer(char *buff, void *key)
Packit Service 102f81
{
Packit Service 102f81
    return snprintf(buff, 25, "%d", (int)key);
Packit Service 102f81
}
Packit Service 102f81
Packit Service 102f81
Packit Service 102f81
Packit Service 102f81
Packit Service 102f81
Packit Service 102f81
Packit Service 102f81
Packit Service 102f81
Packit Service 102f81
Packit Service 102f81
Packit Service 102f81
Packit Service 102f81