ecco già ci siamo quasi apparte qualche piccolo errore, ovvero:
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]!codice:int main() { int n, i, occ=0; nodo *testa[MAX]; for(i=0; i<MAX; i++) testa[i]=NULL; printf("Inserire il numero del quale si stanno ricercando le occorrenze: "); scanf("%d", &n); for(i=0; i<MAX; i++) { if ( testa[i] != NULL ) occ += CercaOccorrenze(testa[i], n); } printf("Il numero %d possiede %d occorrenze.\n", n, occ); system("pause"); return 0; }
Inoltre devi mettere "+=" ovvero:
perchè deve sommare le occorrenze in occ, altrimenti va a contre le occorrenze in ogni singola lista! non so se mi sono spiegato!codice:occ = CercaOccorrenze(testa[i], n) + occ;
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; }

Rispondi quotando