I'm doing a work that I need to create a linked list and sort it in ascending order, doing my tests, I realized that I'm missing a reference to a node, the problem may be logical but I can not find my error. >
method to add and sort:
public void adiciona(Nodo novoNodo) {
for (Nodo i = primeiroNodoDistancia; i != null; i = i
.getProximoNodoDistancia()) {
if (i.getDistancia() > novoNodo.getDistancia()) {
novoNodo.setProximoNodoDistancia(i);
if (i.getNodoAnteriorDistancia() != null) {
novoNodo.setNodoAnteriorDistancia(i
.getNodoAnteriorDistancia());
i.getNodoAnteriorDistancia().setProximoNodoDistancia(
novoNodo);
i.setNodoAnteriorDistancia(novoNodo);
} else {
i.setNodoAnteriorDistancia(novoNodo);
}
if (i == primeiroNodoDistancia)
primeiroNodoDistancia = novoNodo;
}
if (novoNodo.getDistancia() > i.getDistancia()) {
novoNodo.setNodoAnteriorDistancia(i);
if (i.getProximoNodoDistancia() != null) {
novoNodo.setProximoNodoDistancia(i
.getProximoNodoDistancia());
i.getProximoNodoDistancia().setNodoAnteriorDistancia(
novoNodo);
}
i.setProximoNodoDistancia(novoNodo);
}
}
}
My test code looks like this:
c.adicionar(pedro, 50);
System.out.println(c.imprimirListaDistancia());
c.adicionar(joao, 20);
System.out.println(c.imprimirListaDistancia());
c.adicionar(maria, 10);
System.out.println(c.imprimirListaDistancia());
Terminal exit:
Pedro
Joao Pedro
Maria Pedro
I'm missing the reference to John who should be in the middle of the list ..