Given the class No, being:
public class No<T> {
T elemento;
No<T> proximo;
No<T> anterior;
public No(T elemento, No<T> anterior, No<T> proximo) {
this.elemento = elemento;
this.proximo = proximo;
this.anterior = anterior;
}
public No(T elemento) {
this.elemento = elemento;
proximo = null;
anterior = null;
}
}
I should create a boolean remover(T item)
method, which I tried to do as follows:
public boolean remover(T item) {
if (primeiro.elemento.equals(item)) {
primeiro = primeiro.proximo;
primeiro.anterior = null;
return true;
}
No<T> n = primeiro;
T aux1 = null;
T aux2 = null;
while (n.proximo != null) {
if (item.equals(n.proximo.elemento)) {
aux1 = n.proximo.elemento;
n.proximo = n.proximo.proximo;
break;
}
n = n.proximo;
}
n = n.proximo;
while (n.anterior != null) {
if (item.equals(n.anterior.elemento)) {
aux2 = n.anterior.elemento;
n.anterior = n.anterior.anterior;
break;
}
n = n.anterior;
}
if (aux1 == aux2) {
tamanho--;
return true;
}
return false;
}
In this way, I was able to remove almost all items, except the last one before null
, when the program fails.
Is there anything to do to fix this or even a better build for this method?