salve a tutti,
sto cercando di creare un metodo che cancelli un elemento di una lista nella posizione da me indicata.
La lista è composta da metodi e un campo testa di tipo Node; la classe Node è invece composta da un campo cargo di tipo int e un campo next di tipo Node, più svariati metodi compresi setters e getters.
Ho scritto un metodo che serve a cancellare un determinato Node nella posizione n-esima:
codice:
// cancellazione del nodo in posizione n
public boolean ErasePosition( int pos )
{
boolean trovato = false;
// scorro gli elementi
if( testa == null ) // caso lista vuota
{ trovato = false;
this.PrintList();
}
else
{ if( pos == 1 ) // caso primo elemento
{ testa = testa.GetNext();
trovato = true;
this.PrintList();
} else
if( pos > 1 )
{ Node previous = testa;
Node temp = testa.GetNext();
while( temp != null && pos > 2 )
{ pos--;
previous = temp;
temp = temp.GetNext();
}
previous.SetNext( temp.GetNext() );
this.PrintList();
trovato = true;
}
}return trovato;
}
sul libro, su questo forum e su internet in generale ho trovato metodi più veloci del mio, ma non riesco ad applicarli al mio caso. Mi spiego meglio: mi sembra di aver scritto praticamente l'essenziale, qualcuno è in grado di spiegarmi se potevo fare un qualcosa di molto più semplice e veloce?
grazie in anticipo