Primo : devi usare i tag CODE quando mostri del codice, altrimenti diventa difficile leggerlo e darti qualsiasi informazione ...
Secondo : quando hai un errore devi indicare sempre la linea in cui si verifica e il codice/messaggio d'errore ...
In ogni caso, nella riga
lista[i]->word=(char*)malloc(20*sizeof(data));
word non è un puntatore a char ma un vettore di char già allocato. Non ha senso (ed è sbagliato) allocare lo spazio con la malloc.