#include #include typedef struct c { char rijec[30]; int brP; struct c* lijevi; struct c* desni; } Cvor; Cvor* UmetniUStablo(Cvor* c, char* r) { if (c == NULL) { c = (Cvor*) malloc(sizeof(Cvor)); strcpy(c->rijec, r); c->brP = 1; c->lijevi = c->desni = NULL; } else if (strcmp(r, c->rijec) == 0) c->brP++; /* vec postoji rijec */ else if (strcmp(r, c->rijec) < 0) /* nastavljamo u lijevom podstablu */ c->lijevi = UmetniUStablo(c->lijevi, r); else /* nastavljamo u desno podstablu */ c->desni = UmetniUStablo(c->desni, r); return c; } void OdstampajStablo(Cvor* c) { if (c != NULL) { OdstampajStablo(c->lijevi); printf("%4d %s\n", c->brP, c->rijec); OdstampajStablo(c->desni); } } int main(int argc, char *argv[]) { Cvor* stablo = NULL; char rijec[20]; char c, i=0; FILE* dat = fopen("datoteka.dat", "r"); do { c = fgetc(dat); if(!isalpha(c)) { rijec[i] = '\0'; i=0; if(strlen(rijec) > 0) stablo = UmetniUStablo(stablo, rijec); } else rijec[i++] = c; } while(c != EOF); OdstampajStablo(stablo); fclose(dat); system("PAUSE"); return 0; }