Binárny strom

Morseova abeceda


Program   EXE

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

typedef struct vrchol {
       char  znak;
       struct vrchol *bodka, *ciarka;
}  TVrchol;

/* globálna premenná */
FILE *fr;

-----------------------------------------------------------------------------------------
TVrchol *vytvor(char z, TVrchol *b, TVrchol *c)
{
  TVrchol *novy = (TVrchol*)malloc(sizeof(TVrchol));
  
  novy->znak = z;
  novy->bodka  = b;
  novy->ciarka = c;
  return(novy);
}
-----------------------------------------------------------------------------------------
void dekoduj(TVrchol *strom)
{
   TVrchol *p;
   char c;

   p = strom;

   while ((c = getc(fr)) != EOF) {
     if (c == '.') p = p->bodka;
     else if (c == '-') p = p->ciarka;
          else {
             putchar(p->znak);
             p = strom;
          }
  }
}
-----------------------------------------------------------------------------------------
void vypis(TVrchol *v) /* LKP - výpis prvkov stromu */
{
   if (v != NULL) {
     vypis(v->bodka);
     printf("%c ", v->znak);
     vypis(v->ciarka);
   }
}
-----------------------------------------------------------------------------------------
void main() /* hlavný program */
{
  TVrchol *strom = NULL;
  
  /* vytvorenie dekódovacieho stromu */
  strom = vytvor(' ',
           vytvor('e',
             vytvor('i',
               vytvor('s', vytvor('h', NULL, NULL), vytvor('v', NULL, NULL)),
               vytvor('u', vytvor('f', NULL, NULL), NULL)),
             vytvor('a',
               vytvor('r', vytvor('l', NULL, NULL), NULL),
               vytvor('w', vytvor('p', NULL, NULL), vytvor('j', NULL, NULL)))),
           vytvor('t',
             vytvor('n',
               vytvor('d', vytvor('b', NULL, NULL), vytvor('x', NULL, NULL)),
               vytvor('k', vytvor('c', NULL, NULL), vytvor('y', NULL, NULL))),
             vytvor('m',
                vytvor('g', vytvor('z', NULL, NULL), vytvor('q', NULL, NULL)),
                vytvor('o', NULL, NULL))));

 clrscr();
 
 fr = fopen("sprava.txt", "rt");

 printf("Sprava: ");
 dekoduj(strom);
 
 fclose(fr);
}