tree.c
author Markus Bröker <mbroeker@largo.dyndns.tv>
Thu, 16 Apr 2009 12:50:39 +0200
changeset 73 d0578510aea1
parent 61 4b4c97f179da
child 74 829976007e62
permissions -rw-r--r--
Changelog: Makefile and sort.c Makefile: * Environment Variable Profiler=<target> sort.c: * Quick Sort Algorithm implemented committer: Markus Bröker <mbroeker@largo.homelinux.org>

/**
 * test/demos/tree.c
 * Copyright (C) 2008 Markus Broeker
 */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define GETRANDOM(max) (1+(int)((float)max*rand()/RAND_MAX+1.0))

struct T {
    int data;
    struct T *next;
};

typedef struct T T;

T *make_list (int elements, int rand_max)
{
    int i;

    T *t, *first = NULL;

    srand (time (NULL));

    if ((t = malloc (sizeof (T))) == NULL) {
        perror ("MALLOC");
        return first;
    }

    t->data = GETRANDOM (rand_max);
    t->next = NULL;

    first = t;

    for (i = 1; i < elements; i++) {
        if ((t->next = malloc (sizeof (T))) == NULL)
            break;
        t->next->data = GETRANDOM (rand_max);
        t = t->next;
    }

    t->next = NULL;

    return first;
}

int main (int argc, char **argv)
{
    T *t, *next;

    if (argc != 3) {
        printf ("Usage: %s <elements> <rand_max>\n", argv[0]);
        return EXIT_FAILURE;
    }

    t = make_list (atoi (argv[1]), atoi (argv[2]));

    while (t) {
        printf ("%d\n", t->data);
        next = t->next;
        free (t);
        t = next;
    };

    return EXIT_SUCCESS;
}