Ciao a tutti. Sto svolgendo un esercizio del libro di Lippman Terza edizione ( pagina 241, esercizio 5.19 ) dove e' stata implementata una classe lista e bisogna creare una funzione che ricerchi il numero di elementi in essa. Bisogna sfruttare una funzione find() che prende due parametri, l'elemento da cercare ed un puntatore che dice da dove far partire la ricerca, ecco l'implementazione:
codice:
ilist_item* ilist::find( int value, ilist_item *start_at )
{
ilist_item *ptr = _at_front;
if( start_at ) ptr = start_at;
while( ptr )
{
if( ptr->value() == value)
break;
ptr = ptr->next();
}
return ptr;
}
Se l'elemento non viene trovato ritorna 0 ( puntatore nullo )
Io ho implementato la funzione count di conseguenza:
codice:
int ilist::count(int value)
{
ilist_item *ptr = _at_front;
int cnt = 0;
while( ptr )
{
if( find( value, ptr ) ) ++cnt;
ptr = find( value, ptr );
}
return cnt;
}
E non capisco come mai si blocchi, come se il ciclo while andasse all'infinito. Sicuramente c'e' un errore che non riesco a trovare, ma come mai se al posto ci cnt io sistituisco value funziona?( togliendo int cnt = 0 )