Me ensinam conceito de Lista .. por favor!.. xD

Boa noite pessoal, o seguinte, estou enrolado com Lista Encadeada…
olha… é coisa que não está entrando na cabeça, e estou tendo dificuldade disso… olha que já fiz de tudo, mais nada…
bom, olha, eu estou no modo mais simples possível, pra poder aprender mesmo,
estava declarando as classes, do No, e ListaEncadeanda…
tipo…
vou mandar o código de que fiz… olha…

public class ListaEncadeada {

    No ini;

    public void addInicio(String valor) {

        
        No novo = new No();
        novo.setValor(valor);
        novo.setProx(ini);
        
        if(ini == null){
            novo.setAnt(ini);
        } else{
            
        }

       
    }

    public void imprime() {
        No aux = ini;
        while (aux != null) {
            
            if(aux.getAnt() != null && aux.getProx() != null){
                System.out.println(" anterio "+aux.getAnt().getValor());
            System.out.println("valor "+aux.getValor());
            System.out.println("proximo "+aux.getProx().getValor());
            
            }


            aux = aux.getProx();
        }
    }
}

bom, não consigo sair daí…
mais olha… eu fiz a lista simples, de remoção no final e add no final… e add no inicio e remove no inicio…
olha um deles… que fiz… o add no final e remove no final…

public class ListaSimples2 {

    No ini;

    public void addinicio(String valor) {
        No aux = ini;
        No novo = new No();
        novo.setProx(null);
        novo.setValor(valor);

        if (aux == null) {
            ini = novo;
        } else {
            while (aux.getProx() != null) {
                aux = aux.getProx();
            }
            aux.setProx(novo);

        }

    }

    public void imprime() {
        No aux;
        aux = ini;
        System.out.println(aux.getValor());
        while (aux != null) {
            JOptionPane.showMessageDialog(null, aux.getValor());
            System.out.println(aux.getValor());
            aux = aux.getProx();
        }
    }

    public void removerFinal() {
        No aux;
        No ant = null;
        aux = ini;
        while (aux.getProx() != null) {
            ant = aux;
            aux = aux.getProx();
        }
        ant.setProx(null);
        aux = ant;
        imprime();
    }
}

então, só queria mesmo umas dicas, e que me ajudam ao pelo menos entender esse contexto…

muito obrigado pela atenção

O que é esse No?

Explica ai que eu tento ajudar. =D

Então, o meu nó tem as informações necessárias para lista, no caso, valor, proximo e enterior…
certo…

só que eu não estou conseguindo enxergar na minha cabeça, como add, tipo, add 2 nós estava conseguindo… mais que isso, minha lógiica estava dando “merda”

bom… o meu nó é esse


public class No {

    private No prox;
    private No ant;
    private String valor;

    /**
     * @return the prox
     */
    public No getProx() {
        return prox;
    }

    /**
     * @param prox the prox to set
     */
    public void setProx(No prox) {
        this.prox = prox;
    }

    /**
     * @return the ant
     */
    public No getAnt() {
        return ant;
    }

    /**
     * @param ant the ant to set
     */
    public void setAnt(No ant) {
        this.ant = ant;
    }

    /**
     * @return the valor
     */
    public String getValor() {
        return valor;
    }

    /**
     * @param valor the valor to set
     */
    public void setValor(String valor) {
        this.valor = valor;
    }

    /**
     * @return the prox
     */
}

Valeu mesmo pela atenção Ravnus … brigadão!!

Vou tentar explicar o que eu sei, isso é em C, mas pelo o que eu vi ai, também serve pra Java.

public class No {  
  
    private No prox;  
    private No ant;  
    private String valor;  
}

O nó funciona assim: Quando você cria a lista, o primeiro membro aponta para null, fim da lista, e quando ela é iniciada, recebe o valor e continua apontado para null.

Quando você adiciona outro item à lista, esse novo item aponta para o item criado anteriormente e recebe o valor normalmente.

A idéia é a seguinte:

último item —> penúltimo item — > primeiro item

Conforme você vai criando, o primeiro item vai ficando pro fim, sendo o primeiro a ser acessado é o último, (Last In - First Out). O novo item recebe uma referência pro último item criado.

Isso é meio turvo, mas espero ter ajudado em algo.

Editando:

Eu olhei o nó que você fez e percebi o seguinte:

Seu nó tem referência para o anterior e o próximo, sendo que não precisa ser Last In - First Out, cada item do nó tem uma referência para o anterior e o próximo.

Se você fosse acessar isso com um for, poderia fazer assim, só pra entender:

FOR ( Nó Atual = Inicio da lista; NóAtual.prox == null; Nó atual = NóAtual.prox)
    ESCREVA(NóAtual.valor);

Espero ter feito você compreender pelo meu jeito.

Ravnus … muito obrigado…
vc me abriu muito a minha idéia aqui…
vou tentar implementar aqui…
dai… eu posto aqui pra ver se estou no rumo certo…

mais… ainda tenho dificuldade quando inicializa depois do primeiro nó…
mais vou dar meus pulos aqui…

muito obrigado!!