author | Markus Bröker <mbroeker@largo.dyndns.tv> |
Thu, 14 May 2009 17:31:45 +0200 | |
changeset 92 | 0bc2646daa82 |
parent 77 | 49e0babccb23 |
permissions | -rw-r--r-- |
/** * 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; }