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.