Subversion Repositories svnkaklik

Compare Revisions

Ignore whitespace Rev 545 → Rev 546

/programy/C/ix86/trideni_stromem/strom.c
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!!
}