Originariamente inviato da swurzy
Salve a tutti[...]
Ho messo i cout<<n e cout<<# per tentare di capire cosa facesse! Dati 3 elementi l'output è questo: #1#3#5, e mi restituisce sempre la lista vuota! P.S: l è il nodo della classe lista. Dove sbaglio??tu ogni volta che rientri nello scope nel quale n è pari chiami l=l->succ cioè incrementi l di uno, quindi non cancelli i dispari, li cancelli in modo consecutivo: infatti il tuo output di n è:codice:void lista::eliminapari(){ nodo *p; int n=0; if (l==0) cout<<"La lista è vuota"; else //a che serve sto else?? se l ==0 lui comunque non entra nel while while(l!=0){ if (n%2==0){ p=l; l=l->succ; //l è il successivo rispetto all'ultimo ingresso in questo scope delete p; cout<<"#"; n++; cout<<n; } else n++;} }
n "supera" il numero di elementi, ma fa capire che quello scope viene chiamato n_elementi volte e l'errore è proprio quiDati 3 elementi l'output è questo: #1#3#5![]()

Rispondi quotando