Ciao, fare il debug di un programma è un lavoro piuttosto oneroso, potresti limitare il posting alle parti di codice che pensi che possano creare problemi?
se ci limitiamo alla funzione seguente:
codice:
int Hash_Insert(int T[], int k) {
int i = 0;
do {
int j = Hash_Function_Double(k,i);
if (T[j] == 0){
T[j] = k;
return j;
}
else {
i++;
}
}
while (i != m); /* Questo loop potrebbe non terminare mai. E' un errore piuttosto grave */
printf ("Hash Table Overflow"); /*Questa printf viene eseguita sempre, non è condizionata.*/
/*manca il return.*/
}
Rivedi un po questa funzione perchè ha tanti errori, probabilmente dovuti a fretta.
Questi non sono nemmeno bug sono proprio errori che dovrebbero essere rilevati da warning del compilatore. Ma che razza di compilatore usi? 
Ciao