Lista Ligada, remoção

Para estudar para a prova de Estrutura de Dados estou implementado uma linkedlista na mão (não sei se fui claro, não estou simplesmente importando um java.util.LinkedList, estou fazendo um código para ter essa funcionalidade).

Eu gostaria de criar uma função para remover um elemento da lista independente da onde ele esteja, porém não estou conseguindo, o código que eu usei foi esse, mas o menor sucesso, ele remove o primeiro elemento, ao invés do que eu desejo:

public void Remove() {
    Nó ponteiro;
    Nó aux;
    ponteiro = inicio;
    int nIndice = Integer.parseInt(JOptionPane.showInputDialog("Digite o Índice"));
    
        for (int i = 0; i < nIndice; i++) {
            if (i < nIndice && ponteiro == null) {
                System.out.println("Posição Inexistente");
            } // if
            else if (i == nIndice - 1) {
                if (ponteiro.proximo != null) {
                    System.out.println("Executado");
                    aux = ponteiro.proximo;
                    ponteiro.nNumero = aux.nNumero;
                    ponteiro.proximo = aux.proximo;
                } // if
            } // else
        } //for
    } //Remove

Acho que antes do if:

if (ponteiro.proximo != null) 

você precisa atualizar o ponteiro, fazendo:

ponteiro = ponteiro.proximo;

E deve ser por isso que ele sempre remove apenas o primeiro.
Eu imagino que a lógica deveria ser algo próximo disso:

ponteiro = ponteiro.proximo;
atual = ponteiro.proximo;
ponteiro.nNumero = atual.nNumero;
ponteiro.proximo = atual.proximo; // aqui remove o atual

Se não funcionar, coloca aqui o restante do código pra entendermos melhor.

1 curtida

Nossa, verdade esqueci disso, tava tão na cara, mas minha visão estava viciada.
Vou testar em casa e aviso se deu certo