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