estruturaDeDadosJavaDio icon indicating copy to clipboard operation
estruturaDeDadosJavaDio copied to clipboard

ListaDuplamenteEncadeada - Método remove

Open DanielPaes opened this issue 3 years ago • 1 comments

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--; }

DanielPaes avatar Jan 17 '22 03:01 DanielPaes

estou com problema nesse código tbm, quando coloco index = 0, roda td certo, agora se eu botar qualquer outro index, da erro.

JamisonCarvalho avatar Apr 06 '23 19:04 JamisonCarvalho