niedziałające własne drzewo binarne

0

program ma na celu wyznaczanie najczęściej występujących słowa w kilku dramatach Szekspira (program komputerowy w języku C)
kompiluje się uruchamia ale nie działa jak powinien proszę o pomoc , chociaż podpowiedz jakąś co zrobiłem nietak

#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#define max 20
char   sslowo[max];
struct Wezel
{
        char *slowo ;
        int ilosc;
        struct Wezel *lewo; //deklaruje lewo jako wskaznik do wezla a nie sam wezel
       struct Wezel *prawo;
};
typedef struct Wezel wezel;


wezel* drzewo(wezel *korzen, char *sslowo)
{
int a;

        if(korzen==NULL)
        {
          korzen= (struct Wezel *) malloc(sizeof (struct Wezel));
          korzen->ilosc= 1;
          korzen->lewo = NULL;
          korzen->prawo = NULL;
          korzen->slowo=  (char*) malloc(sizeof(char)*strlen(sslowo+1));     
          strcpy (korzen->slowo, sslowo);
        }
        else
        {
            a = strcmp(sslowo,korzen->slowo);
                if(a ==0)
                korzen->ilosc++;
                else
                {
                        if(a<0)
                        korzen->lewo=drzewo(korzen->lewo,sslowo);
                        else
                        korzen->prawo=drzewo(korzen->prawo,sslowo);
                }
        }
        return korzen;
}



void WypiszDrzewo(struct Wezel *korzen)
{   
        if (korzen != NULL)
        {
                WypiszDrzewo(korzen->lewo);
                printf("%4d   %s\n",korzen->ilosc,korzen->slowo);
                WypiszDrzewo(korzen->prawo);
        }
}






main()
{

int i=0,j=0;
char s[200];
FILE* t;
wezel *mytree = NULL;

t = fopen( "HAMLET.txt", "r" );
if (t==NULL) return 1;          //zakoncz gdy nie mozna otworzyc pliku

        while (!feof(t))
        {
                fgets(s,sizeof(s),t);        //wczytaj kolejna linie do s
                while(s[j]!='\0')
                {
                        memset(sslowo,0,max* sizeof(char)); //czyszczę tab sslowo
                        while(isalpha(s[j]))
                        {
                                sslowo[i]=s[j];
                                i++;
                                j++;
                        }
                        sslowo[i]='\0';
                        printf("%s\n",sslowo);
                        mytree = drzewo(mytree,sslowo);
                        j++;
                        i=0;
                }
                j=0;
        }
WypiszDrzewo(mytree); //wypisuje rekurencyjnie drzewo
fclose(t);
getch();
return 0;
}

poprawiłem kod (kompiluje się ) ale nadal nie działa jak powinien :(

0

Jakie błędy?

0

O dobra ale co np. takie coś ma znaczyć?

struct **korzen

? korzeń jest wskaźnikiem do wskaźnika na strukturę, ale jaką?

Popraw ten kod tak zeby składniowo był logiczny i sie kompilował, a potem możemy pomyśleć nad sensownością tego rozwiązania.

0

poprawiłem swój kod kompiluje się ale nie działa jak powinien :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1