Puoi fare qlcosa del genere:

codice:
//Struttura per mantenere il numero di occorrenze di una stringa

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{
			ListCount *temp = lisCount;
			//ultimo elemento non nullo di lisCount
			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;
}
A questo punto, se vuoi stampare le stringhe in ordine decrescente di occorrenze puoi ordinare la lista restituita da buidListCount in base al campo el, e poi stamparla.

PS: il codice non l'ho testato, quindi potrebbe contenere errori, però come idea è corretto,