//dżewo binarne (float, string)
#include "stdafx.h"
#include <malloc.h>
#include <conio.h>
#include <cstring>
struct dzewo
{
double dane;
char *slowo;
struct dzewo *lewslowo, *prawslowo;
};
struct dzewo *Nowe_dzewo(double _dane, char* slowo_str)
{
struct dzewo * nowe = (struct dzewo*)malloc(sizeof(struct dzewo));
nowe->dane = _dane;
nowe->slowo = NULL;
nowe->slowo = (char*)malloc (sizeof(char)*(strlen (slowo_str)) );
strcpy(nowe->slowo, slowo_str);
nowe->lewslowo = nowe->prawslowo = 0;
return nowe;
}
void Wstaw_dz(struct dzewo *rut, double _dane, char* slowo_str)
{
for(;;)
{
if (_dane<rut->dane)
{
if (rut->lewslowo == 0)
{
rut->lewslowo = Nowe_dzewo(_dane, slowo_str);
return;
}
else
rut = rut->lewslowo;
}
else{
if(rut->prawslowo==0)
{
rut->prawslowo = Nowe_dzewo(_dane, slowo_str);
return;
}
else rut = rut->prawslowo;
}
}
}
int l = 0, p = 0;
void Wyswietl(struct dzewo * rut)
{
printf("%.2lf | %s\n", rut->dane, rut->slowo);
if (rut->lewslowo != NULL)
{
++l;
printf("l: %d/", l);
Wyswietl(rut->lewslowo);
}
if (rut->prawslowo != NULL)
{
++p;
printf("p: %d\\", p);
Wyswietl(rut->prawslowo);
}
}
bool Wyszukaj(dzewo* rut, float _dane)
{
if (rut == NULL)
return false;
else if (rut->dane == _dane)
return true;
else if (rut->dane < _dane)
return Wyszukaj(rut->prawslowo, _dane);
else return Wyszukaj(rut->lewslowo, _dane);
}
void Zwalnianie(dzewo *rut)
{
if (rut->lewslowo != NULL)
Zwalnianie(rut->lewslowo);
if (rut->prawslowo != NULL)
Zwalnianie(rut->prawslowo);
delete rut;
}
int main()
{
double do_szukania = 9.99;
double liczba;
char slowo[10];
FILE *no_plik;
if ((no_plik = fopen("plik.txt", "r")) != NULL) {
fscanf(no_plik, "%lf", &liczba);
fscanf(no_plik, "%s", &slowo);
dzewo *ent = Nowe_dzewo(liczba, slowo);
while (!feof(no_plik))
{
fscanf(no_plik, "%lf", &liczba);
fscanf(no_plik, "%s", &slowo);
Wstaw_dz(ent, liczba, slowo);
}
printf("Leci drzewo!\n");
Wyswietl(ent);
printf("\n%d", Wyszukaj(ent, 9.99));
printf("\n%d", Wyszukaj(ent, 2.50000000));
Zwalnianie(ent);
}
else
printf("Chuju pliku nie ma\n");
getch();
return 0;
}
Comments
0 B
|👍
/👎