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);
   }
....
ho visto solo stamattina la tua funzione di hash...
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...

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);
   }
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...!!!

VVoVe: