| V I S U A L I Z Z A D I S C U S S I O N E |
| Nik |
Inserito il - 07/09/2004 : 23:50:08 qualcuno mi saprebbe dire con esattezza l'implementazione della funzione hash in c? grazie |
| 3 U L T I M E R I S P O S T E (in alto le più recenti) |
| nicux |
Inserito il - 08/09/2004 : 20:41:27 Citazione: Messaggio inserito da Nik
Grazie, mi sa che manca qualcosa dopo il for i=0 vero?
int hash(char *chiave) { int indice=0, base=128; for(i=0 ;*chiave!='\0';chiave++) indice=(base*indice+*chiave)%DIM_TABELLA; return indice;
non manca nulla, non ho bisogno di contare da 0 a n perchè il ciclo si ferma quando il vettore finisce. Prova a esercitarti sui cicli di scansioni di stringhe (o vettori di char) vedrai che ti renderai conto del perchè si usa quella forma sul for. |
| Nik |
Inserito il - 08/09/2004 : 20:26:19 Grazie, mi sa che manca qualcosa dopo il for i=0 vero?
int hash(char *chiave) { int indice=0, base=128; for(i=0 ;*chiave!='\0';chiave++) indice=(base*indice+*chiave)%DIM_TABELLA; return indice;
|
| nicux |
Inserito il - 08/09/2004 : 01:58:32 Citazione: Messaggio inserito da Nik
qualcuno mi saprebbe dire con esattezza l'implementazione della funzione hash in c? grazie
ai fini dell'esame di linguaggi non è importante la qualità della funzione hash, è sufficiente che svolga il lavoro di restituire un numero compreso in un determinato intervallo a fronte di una stringa in argomento. Per tenere ad esempio il valore di ritorno x nell'intervallo [0,n] devi fare una semplice x=x%n; mentre la conversione della stringa è abbastanza arbitraria, a me piace applicare l'algoritmo di horner opportunamente modificato:
int hash(char *chiave)
{
int indice=0, base=128;
for(;*chiave!='\0';chiave++)
indice=(base*indice+*chiave)%DIM_TABELLA;
return indice;
}
|