La funzione che conta il numero di elementi pari ad un certo valore passato come argomento ce l'hai già, invece di funzione() chiamala conta_occorrenze() così si capisce cosa fa, e falle ritornare il valore (attenzione che in quello che avevi scritto non inizializzavi a 0 il count!):
int conta_occorrenze(struct list*ptr, valore)
{
int count=0;
while (ptr!=NULL){
if(ptr->value==valore){
count++;
}
ptr=ptr->next_ptr;
}
return count;
}
Verificala bene che ti ritorni i conteggi attesi, es con un lista
1 2 5 2 1 5 5
verifica che
conta_occorrenze(1) ritorni 2
conta_occorrenze(2) ritorni 2
conta_occorrenze(5) ritorni 3
Bene.
Sei in grado (suppongo di sì) di scrivere una funzione che stampa a video tutti i valori della lista?
Se non ce l'hai (come hai fatto a provare il punto precedente?), scrivila e provala.
Se invece ce l'hai già, e funziona, ti è sufficiente richiamare conta_occorrenze() per ciascun elemento che stampi, passando appunto il dato nel parametro valore della conta_occorrenze().