Scusa il ritardo, con le feste di mezzo non sono più riuscito a connettermi!

Originariamente inviato da MrX87
il for che ho inserito serve per mettere inizialmente a NULL tutti i puntatori...altrimenti se vai a cercare e la lista è vuota ti va in crash, e poi quando vai a fare la ricerca, fai un test prima su testa[i] per vedere se il puntatore non è NULL, e poi passi alla funzione testa[i], non testa[MAX]!
Inoltre devi mettere "+=" ovvero:
codice:
occ = CercaOccorrenze(testa[i], n) + occ;
perchè deve sommare le occorrenze in occ, altrimenti va a contre le occorrenze in ogni singola lista! non so se mi sono spiegato!
Certo che ti sei spiegato anzi, i tuoi consigli sono stati fino ad ora chiarissimi! Effettivamente mi era sfuggito questo ragionamento!

Originariamente inviato da MrX87
Infine la funzione ricerca io la farei come l'hai fatta tu ma sl cn una piccola modifica:
codice:
int CercaOccorrenze(nodo *cursore, int num)
{
    nodo *temp;
    int trovato = 0;

    temp = cursore;

    while(temp != NULL)
    {
        if(temp->valore == num)
        {
            trovato++;
        }
        temp = temp->next;
    }

    return trovato;
}
Mi sono aiutato con uno schemino grafico ed ho compreso la tua semplificazione ma a questo punto mi sorge una domanda: a cosa serve *temp? Non potrei fare la stessa identica cosa utilizzando solamente *cursore?

Intanto ti ringrazio per il tempo ed il supporto dedicatomi, senza il tuo aiuto mi sarei perso all'interno del codice!