Subversion Repositories svnkaklik

Rev

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!!
}