ho apportato alcune modifiche ora non da più nessun errore ...

codice:
struct ListCount
{
  char *el;
  struct ListCount *next;
  int count;
};

//La seguente funzione prende in input una lista di List e
//restituisce una lista di ListCount, costiutita da tanti elementi
//quanti sono le stringhe diverse, e per ognuna il campo count 
//contiene il numero di occorrenze della stringa

struct ListCount *buildListCount(struct List *lis){
        //Il puntatore a ListCount che sarà resituito come risultato
	struct ListCount * lisCount = NULL;
        //scorriamo la lista di stringhe
	for(lis != NULL; lis = lis -> next;)
 {
                //se listCount non è ancora inizializzato creiamo il
                //primo elemento e ci inseriamo la prima stringa
                //della lista
		if(lisCount == NULL){
			lisCount =(struct ListCount *)malloc(sizeof(struct ListCount));
			lisCount -> el = lis -> el;
			lisCount -> next = NULL;
			lisCount -> count = 1;
		}
                //altrimenti scorriamo lisCount; se la stringa
                //corrente è gia presente incrementiamo il campo
                //count, se no aggiungiamo un nuovo elemento
                //alla lista lisCount per la stringa corrente
		else
  {
			struct ListCount *temp = lisCount;
			//ultimo elemento non nullo di lisCount
			struct ListCount *last = NULL;
			for(; temp != NULL; temp = temp -> next){
				if(strcmp(lis -> el, temp -> el) == 0){
					temp -> count = temp -> count + 1;
					break;
				}
				last = temp;
			}
			//Se la stringa non è stata trovata temp == NULL
			//quindi creiamo un nuovo elemento nella lista
			if(temp == NULL){
				last -> next = (struct ListCount *)malloc(sizeof(struct ListCount));
				last = last -> next;
				last -> el = lis -> el;
				last -> next = NULL;
				last -> count = 1;
			}
		}
	}
	return lisCount;
}