Sto studiando le liste concatenate (o linked List, o liste linkate) in java e sto cercando un metodo per cancellare la coda di una lista.
Quale dei due metodi, secondo voi, è più efficiente? O sono di eguale efficienza?
Primo metodo:
codice:
public void deleteTail(){
if(isEmpty())
return;
if(this.head.getNext() == null){
this.head = null;
return;
}
Nodo aux = this.head;
for(;aux.getNext().getNext() != null; aux = aux.getNext());
aux.setNext(null);
}
Secondo metodo:
codice:
public void deleteTail(){
if (isEmpty())
return;
Nodo aux = head;
Nodo prev = null;
for( ; aux.getNext() != null; prev = aux, aux = aux.getNext());
if(prev == null)
head = null;
else
prev.setNext(null);
}
Ovviamente head è la testa della lista;
getNext() mi restituisce il nodo successivo;
setNext(Nodo n) mi setta il successivo.
isEmpty mi dice se la lista è vuota o meno.
Il primo metodo l'ho scritto io, il secondo lo propone le slide su cui sto studiando ed in entrambi i casi funzionano, ho fatto delle prove con 0 elementi, 1, 2, 3 e n elementi generati casualmente.
Grazie in anticipo