Subversion Repositories svnkaklik

Rev

Details | Last modification | View Log

Rev Author Line No. Line
546 kaklik 1
//
2
//
3
//
4
 
5
#include <stdlib.h>
6
#include <stdio.h>
7
 
8
int rnd (int max)
9
{
10
  return ( (int) (max * (rand()/(RAND_MAX+1.0))));  // znormalizuje vygenerovanou hodnotu na pozadovany rozsah
11
}
12
 
13
void init_rnd(void)  // inicializace generatoru nahodnych cisel podle casu
14
{
15
  time_t t;
16
  unsigned int seed;
17
  time(&t);
18
  seed=(unsigned int) t;
19
  srand(seed);
20
}
21
 
22
struct prvek
23
{
24
  int data;
25
  struct prvek *levy;
26
  struct prvek *pravy;
27
};
28
 
29
int vlozprvek(int hodnota, struct prvek *vrchol)
30
{
31
struct prvek *novyprvek;
32
 
33
  if (hodnota < vrchol->data){
34
    if(vrchol->levy != NULL) 
35
      vlozprvek(hodnota, vrchol->levy);
36
    else
37
    {
38
      novyprvek = malloc(sizeof (struct prvek));
39
      if (novyprvek == NULL) fprintf(stdout,"chyba pri alokaci pameti\n");
40
      vrchol->levy = novyprvek;
41
      novyprvek->data = hodnota;
42
      novyprvek->levy = NULL;
43
      novyprvek->pravy = NULL;
44
    }
45
  }
46
  else{
47
    if(vrchol->pravy != NULL) vlozprvek(hodnota,vrchol->pravy);
48
    else
49
    {
50
      novyprvek = malloc(sizeof (struct prvek));
51
      if (novyprvek == NULL) fprintf(stdout,"chyba pri alokaci pameti\n");
52
      vrchol->pravy = novyprvek;
53
      novyprvek->data = hodnota;
54
      novyprvek->levy = NULL;
55
      novyprvek->pravy = NULL;
56
    }
57
  }
58
}
59
 
60
vypis_prvky(struct prvek *vrchol)
61
{
62
  if (vrchol !=  NULL);
63
  {
64
    vypis_prvky(vrchol->levy);
65
    fprintf(stdout,"%d ",vrchol->data);
66
    vypis_prvky(vrchol->pravy);
67
  }
68
}
69
 
70
int main(void){
71
 
72
struct prvek koren;
73
unsigned int i;
74
unsigned int dalsihodnota;
75
 
76
init_rnd();
77
 
78
fprintf(stdout,"prvky vkladane do stromu\n");
79
 
80
koren.data=rnd(100);		// vytvoreni korene stromu
81
koren.levy=NULL;
82
koren.pravy=NULL;
83
fprintf(stdout,"%d ", koren.data);
84
 
85
for(i=0; i<10;i++)		//naplneni stromu nahodnymi prvky
86
{
87
  dalsihodnota = rnd(100);
88
  fprintf(stdout,"%d ", dalsihodnota);
89
  vlozprvek(dalsihodnota, &koren);
90
}
91
 
92
fprintf(stdout,"\nvypsani  prvku ze stromu\n");
93
 
94
vypis_prvky(&koren);
95
fprintf(stdout,"\n");
96
 
97
// free  strom    /// uvolnit pamet!!
98
}