BUONA MATTINATA A TUTTI I PARTECIPANTI AL FORUM!!

Che comando devo usare per verificare in una lista se due elementi sono uguali e fare una sorta di contatore per verificare quante volte sono ripetuti determinati elementi e ordinarli in modo da stampare in ordine dagli elementi ripetuti più volte fino a stampare per ultimi quelli non ripetuti?

Code:

codice:
while(fgets(s,254,FileIn))
{                
        if (strstr (s, par) != NULL)
        {
              if(head == NULL){
                      head = (struct List *)malloc (sizeof(struct List));
                      init(head, s);
              }
              else
                       add(head, s);

              temp = head;
              while(temp != NULL)
              {
                      printf("%s\n", temp ->el);
                      temp = temp ->next;
              }
              y++;
        }
        else           
               x++;
}

              c = -1;
              fclose(FileIn); 
 
 }
 
  
}
CIAO E GRAZIE :::

p.s. il codice che ho postato non fa altro che inserire gli elementi nella lista (strignhe) e poi me li stampa tutti ripetendomi gli elementi uguali ...