#include #include #include struct slovo { // Jedno slovo struct slovo *next; char text[1]; }; int N; // Počet slov struct slovo **p; // Příhrádky (pointery na první slova v~nich) unsigned int f(unsigned char *x) // Rozdělovací funkce { unsigned int z = strlen(x); while (*x) z = z*259309 + *x++; return z % N; } void cti_slovnik(void) { int i, h; char x[256]; struct slovo *s; scanf("%d\n", &N); // Počet slov p = calloc(sizeof(struct slovo *), N); // Alokujeme paměť for(i=0; inext = p[h]; p[h] = s; strcpy(s->text, x); } } void test(char *x) // Otestuje a případně vypíše slovo { struct slovo *s = p[f(x)]; while (s) { if (!strcmp(s->text, x)) { puts(x); return; } s = s->next; } } void dotazy(void) // Odpovídá na dotaz { char x[256], y[256]; int i,j,g; while (gets(x)) // Sem se vstupem, šotku! { g = strlen(x); for(i=0; i