estruturaDeDadosJavaDio
estruturaDeDadosJavaDio copied to clipboard
ListaDuplamenteEncadeada - Método remove
Olá, João. Tudo certo? No método de remover elemento da lista duplamente encadeada, encontrei um bug ao atribuir o noAuxiliar ao ultimoNo. O problema aparece ao excluirmos o último nó. A execução da classe main roda sem problemas para fazer a exclusão. O problema aparece se tentarmos adicionar outro elemento ao final da fila, pois o atributo ultimoNo está apontando para um nó que já foi excluído. Eu consegui resolver a exceção que ocorria, fazendo o seguinte (em negrito):
public void remove(int index){ if(index == 0){ primeiroNo = primeiroNo.getNoProximo(); if(primeiroNo != null){ primeiroNo.setNoPrevio(null); } }else{ NoDuplo<T> noAuxiliar = getNo(index); noAuxiliar.getNoPrevio().setNoProximo(noAuxiliar.getNoProximo()); if(noAuxiliar != ultimoNo){ noAuxiliar.getNoProximo().setNoPrevio(noAuxiliar.getNoPrevio()); }else{ ultimoNo = noAuxiliar.getNoPrevio(); // Agora o nó prévio do último nó, que fui excluído, assumirá a última posição da lista. } } tamanhoLista--; }
estou com problema nesse código tbm, quando coloco index = 0, roda td certo, agora se eu botar qualquer outro index, da erro.