Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Java ::: Estruturas de Dados ::: Lista Ligada Simples

Estruturas de dados para iniciantes - Como criar uma Lista Ligada em Java

Quantidade de visualizações: 859 vezes
A estrutura de dados Lista Ligada, ou Lista Encadeada, ou ainda Lista Singularmente Ligada, é a primeira estrutura de dados dinâmica que devemos estudar e dominar bem, antes de passarmos para as filas, pilhas, árvores e grafos.

Uma Lista Ligada é uma estrutura de dados linear, na qual os elementos são guardados como nós. Cada nó da lista possui dois atributos: Um campo chamado "valor" ou "dados" (que pode guardar um valor inteiro, uma referência a um vetor ou matriz, objetos, etc) e um campo "proximo" (que guarda um ponteiro ou referência para o próximo elemento da lista, conforme mostrado na imagem abaixo:



Essa definição é muito importante. Veja que temos uma estrutura ou classe (dependente da sua linguagem de programação) chamada No. O campo valor guarda o inteiro 15, enquanto o campo Proximo guarda uma referência a um objeto igual a ele, ou seja, o ponteiro "proximo" é o responsável pelo encadeamento da lista. Quando este ponteiro (ou referência) não estiver apontando para nenhum local de memória, então saberemos que ele é o último nó da lista.

Quando encadeamos (ou ligamos) vários nós, temos a seguinte representaçaõ de lista ligada:



Veja que nossa lista possui três nós. O primeiro nó, que é o início da lista, possui o valor 5, enquanto o terceiro nó, com o valor 4, é o final da lista. Em geral identificamos como final da lista o nó cujo ponteiro "proximo" não está apontando para nenhum outro nó.

Agora que já vimos a teoria, vamos à implementação de uma lista encadeada simples em Java. Para facilitar seus estudos, eu optei por colocar tudo em apenas um código. Quando quiser avançar um pouco mais, divida as classes em arquivos .java separados.

Eis o código completo:

----------------------------------------------------------------------
Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar)

Este código foi útil? Paga um cafezinho pra mim :-(
PIX: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package estudos;

// definição da classe No
class No {
  // valor inteiro que será guardado neste nó
  int valor;
  // ponteiro para o próximo nó da lista
  No proximo;
};

// definição da classe ListaLigada
class ListaLigada{
  // aponta para o início da lista
  No inicio;
  
  // construtor que permite criar uma lista ligada vazia
  public ListaLigada(){
    // o valor null para o início da lista indica que ela
    // está vazia
    this.inicio = null;
  }

  // método que permite exibir os nós da lista
  public void imprimirLista(){
    // criamos um nó temporário para apontar para
    // o primeiro nó da lista
    No temp = this.inicio;
    
    // testamos se a lista não está vazia
    if(temp != null) {
      System.out.println("Os valores na lista ligada são:\n");
      
      // varremos a lista até encontrarmos um nó nulo
      while(temp != null){
        // exibimos o valor do nó
        System.out.print(temp.valor + " ");
        // e saltamos para o nó seguinte
        temp = temp.proximo;
      }
    } 
    else { // a lista está vazia
      System.out.println("\nLista vazia\n");
    }
  }     
};

public class Estudos {
  public static void main(String[] args){
    // vamos criar uma lista ligada vazia
    ListaLigada lista = new ListaLigada();

    // vamos inserir o primeiro nó na lista
    No no1 = new No();
    no1.valor = 5; // define o valor do nó
    no1.proximo = null; // náo aponta para nenhum outro nó 
    // marcamos este nó como sendo o início da lista
    lista.inicio = no1;
    
    // vamos inserir o segundo nó
    No no2 = new No();
    no2.valor = 32; // define o valor do nó
    no2.proximo = null; // náo aponta para nenhum outro nó 
    // o primeiro nó vai apontar para este nó agora
    no1.proximo = no2;

    // vamos inserir mais um nó?
    No no3 = new No();
    no3.valor = 7; // define o valor do nó
    no3.proximo = null; // náo aponta para nenhum outro nó 
    // o segundo nó vai apontar para este nó
    no2.proximo = no3;
    
    // vamos imprimir a lista
    lista.imprimirLista();
    
    // uma quebra de linha pra deixar o console bonito
    System.out.println("\n");
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Os valores na lista ligada são:

5 32 7

Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 22 usuários muito felizes estudando em nosso site.