Hyluss icon

Drzewo binarne

Hyluss | PRO | 05/24/16 09:42:17 PM UTC | 0 ⭐ | 568 👁️ | Never ⏰ | []
C |

2.71 KB

|

None

|

0 👍

/

0 👎

//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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎