ho visto solo stamattina la tua funzione di hash...Originariamente inviato da n4zgul
....
codice:int h(char *x) // Funzione di hash { int i,num; num=0; for (i=0;i<strlen(x);i++) num += x[i]; num = num % n; return(num); } ....
n e globale e uguale a 50 che rappresenterebbe...
così nonè buonissima come funzione di hash,poichè la distrubuzione delle chiavi non è uniforme su tutti gli indici...
la migliore distrubuzuione si ha con n = 2...
inoltre per fare come dici tu, almeno se ho capito, basta modificare la funzione cosi...
dove indice è l'indice del vettore dove inserire la chiave e base è la base (7,11,16)... naturalmente se usi base 7 avrai che il range delle chiavi va da 0 a 6... e quindi di conseguenza la dimensione della hashtable ne risente...!!!codice:int h(char *x, int base) // Funzione di hash { int i,num, indice; num=0; for (i=0;i<strlen(x);i++) num += x[i]; indice = num % base; return(num); }
VVoVe:
![]()
![]()
![]()
![]()

VVoVe:
Rispondi quotando