// IED-001 (Prof. Dr. Silvio do Lago Pereira) // ----------------------------------------------------------------------------- // Exemplo 2 // ----------------------------------------------------------------------------- int hash(int c, int m) { return (c % m); } // ----------------------------------------------------------------------------- // Exemplo 3 // ----------------------------------------------------------------------------- typedef struct dic { int tam; Map *vet; } *Dic; // ----------------------------------------------------------------------------- // Exemplo 4 // ----------------------------------------------------------------------------- Dic dic(int m) { Dic d = malloc(sizeof(struct dic)); d->tam = m; d->vet = malloc(m*sizeof(Map)); for(int i=0; ivet[i] = NULL; return d; } // ----------------------------------------------------------------------------- // Exemplo 5 // ----------------------------------------------------------------------------- void insd(Chave c, Valor v, Dic d) { insm(c, v, &d->vet[hash(c,d->tam)]); } // ----------------------------------------------------------------------------- // Exemplo 6 // ----------------------------------------------------------------------------- void remd(Chave c, Dic d) { remm(c, &d->vet[hash(c,d->tam)]); } // ----------------------------------------------------------------------------- // Exemplo 7 // ----------------------------------------------------------------------------- int pertd(Chave c, Valor v, Dic d) { return pertm(c, v, d->vet[hash(c,d->tam)]); } // ----------------------------------------------------------------------------- // Exemplo 8 // ----------------------------------------------------------------------------- void exibed(Dic d) { for(int i=0; itam; i++) { printf("%d: ", i); exibem(d->vet[i]); } } // ----------------------------------------------------------------------------- // Exemplo 9 // ----------------------------------------------------------------------------- void destroid(Dic *d) { for(int i=0; i<(*d)->tam; i++) destroim(&(*d)->vet[i]); free(*d); *d = NULL; } // ----------------------------------------------------------------------------- // Exercicio 1 // ----------------------------------------------------------------------------- #include ... int main(void) { Dic D = dic(5); insd(59, "Bia", D); insd(48, "Eva", D); insd(25, "Ivo", D); insd(17, "Ana", D); insd(83, "Leo", D); exibed(D); return 0; } // ----------------------------------------------------------------------------- // Exemplo 10 // ----------------------------------------------------------------------------- unsigned hash(char *c, int m) { unsigned s = 0; for(int i=0; c[i]; i++) s += (i+1)*c[i]; return (s % m); } // ----------------------------------------------------------------------------- // Exercicio 3 // ----------------------------------------------------------------------------- #include ... int main(void) { Dic D = dic(3); insd("bat", "morcego", D); insd("pig", "porco", D); insd("cat", "gato", D); insd("dog", "cachorro", D); insd("cow", "vaca", D); exibed(D); return 0; }