#include #include #define HASHSIZE 101 typedef struct s { /* tabela */ struct s *sledeci; /* sledeci clan u lancu */ char kljuc[10]; char vrijednost[100]; } Polje; Polje *hashtabela[HASHSIZE]; /* tabla pokazivaca */ unsigned hash(char *s) { unsigned int hashval; int i; for (hashval=0, i=0; s[i] != '\0'; i++) hashval += s[i]; return hashval % HASHSIZE; } Polje *nadji(char *s) { Polje *mjesto; for (mjesto = hashtabela[hash(s)]; mjesto != NULL; mjesto = mjesto->sledeci) if (strcmp(s, mjesto->kljuc) == 0) return mjesto; /* pronadjen */ return NULL; /* nije pronadjen */ } Polje *ubaci(char *kljuc, char *vrijednost) { if(nadji(kljuc) == NULL) { // Ne postoji element sa unesenim kljucem if(hashtabela[hash(kljuc)] != NULL) { Polje *mjesto = hashtabela[hash(kljuc)]; while(mjesto->sledeci != NULL) mjesto = mjesto->sledeci; mjesto->sledeci = (Polje*) malloc(sizeof(Polje)); strcpy(mjesto->sledeci->kljuc, kljuc); strcpy(mjesto->sledeci->vrijednost, vrijednost); mjesto->sledeci->sledeci = NULL; } else { hashtabela[hash(kljuc)] = (Polje*) malloc(sizeof(Polje)); strcpy(hashtabela[hash(kljuc)]->kljuc, kljuc); strcpy(hashtabela[hash(kljuc)]->vrijednost, vrijednost); hashtabela[hash(kljuc)]->sledeci = NULL; } } else { // Postoji element sa unesenim kljucem printf("Greska: Vec postoji vrijednost sa unesenim kljucem!\n"); return NULL; } } int main(int argc, char *argv[]) { int i; for(i=0; ivrijednost); system("PAUSE"); return 0; }