0,0 → 1,98 |
// |
// |
// |
|
#include <stdlib.h> |
#include <stdio.h> |
|
int rnd (int max) |
{ |
return ( (int) (max * (rand()/(RAND_MAX+1.0)))); // znormalizuje vygenerovanou hodnotu na pozadovany rozsah |
} |
|
void init_rnd(void) // inicializace generatoru nahodnych cisel podle casu |
{ |
time_t t; |
unsigned int seed; |
time(&t); |
seed=(unsigned int) t; |
srand(seed); |
} |
|
struct prvek |
{ |
int data; |
struct prvek *levy; |
struct prvek *pravy; |
}; |
|
int vlozprvek(int hodnota, struct prvek *vrchol) |
{ |
struct prvek *novyprvek; |
|
if (hodnota < vrchol->data){ |
if(vrchol->levy != NULL) |
vlozprvek(hodnota, vrchol->levy); |
else |
{ |
novyprvek = malloc(sizeof (struct prvek)); |
if (novyprvek == NULL) fprintf(stdout,"chyba pri alokaci pameti\n"); |
vrchol->levy = novyprvek; |
novyprvek->data = hodnota; |
novyprvek->levy = NULL; |
novyprvek->pravy = NULL; |
} |
} |
else{ |
if(vrchol->pravy != NULL) vlozprvek(hodnota,vrchol->pravy); |
else |
{ |
novyprvek = malloc(sizeof (struct prvek)); |
if (novyprvek == NULL) fprintf(stdout,"chyba pri alokaci pameti\n"); |
vrchol->pravy = novyprvek; |
novyprvek->data = hodnota; |
novyprvek->levy = NULL; |
novyprvek->pravy = NULL; |
} |
} |
} |
|
vypis_prvky(struct prvek *vrchol) |
{ |
if (vrchol != NULL); |
{ |
vypis_prvky(vrchol->levy); |
fprintf(stdout,"%d ",vrchol->data); |
vypis_prvky(vrchol->pravy); |
} |
} |
|
int main(void){ |
|
struct prvek koren; |
unsigned int i; |
unsigned int dalsihodnota; |
|
init_rnd(); |
|
fprintf(stdout,"prvky vkladane do stromu\n"); |
|
koren.data=rnd(100); // vytvoreni korene stromu |
koren.levy=NULL; |
koren.pravy=NULL; |
fprintf(stdout,"%d ", koren.data); |
|
for(i=0; i<10;i++) //naplneni stromu nahodnymi prvky |
{ |
dalsihodnota = rnd(100); |
fprintf(stdout,"%d ", dalsihodnota); |
vlozprvek(dalsihodnota, &koren); |
} |
|
fprintf(stdout,"\nvypsani prvku ze stromu\n"); |
|
vypis_prvky(&koren); |
fprintf(stdout,"\n"); |
|
// free strom /// uvolnit pamet!! |
} |