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

 
			
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando