Blame | Last modification | View Log | Download
//
//
//
#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!!
}