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;
}