Escolar Documentos
Profissional Documentos
Cultura Documentos
2 Lista Ligada
2 Lista Ligada
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
Lista ligada
17
Uma solução seria a utilização de estruturas de dados que possibi-
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
litam a variação do número de elementos de acordo com a necessida-
de, permitindo aumentar e diminuir o número de elementos conforme
a necessidade da aplicação e oferecendo alternativas para implemen-
tação computacional de problemas como o cadastro de clientes de
uma empresa.
18 Estrutura de dados
A figura 1 ilustra a representação gráfica de uma lista ligada imple-
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
Início Nó 1 Nó 2 Nó 3 ... Nó n
No caso de uma lista ligada vazia, ou seja, que não apresenta ne-
nhum elemento, o início aponta para um valor nulo, conforme apresen-
tado na figura 2. A lista vazia é, geralmente, o estado inicial de criação
de uma lista ligada, além disso, é um estado a ser testado em diversas
situações computacionais; por exemplo, ao remover um elemento da
lista ligada, o estado de lista vazia deve sempre ser testado.
Início
Lista ligada 19
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
// Implementação da classe No
public class No
this.elemento = elemento;
this.proximo = proximo;
this.proximo = proximo;
return proximo;
this.elemento = elemento;
return elemento;
// Final da classe No
20 Estrutura de dados
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
private No inicio;
this.inicio = null;
Lista ligada 21
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
// Implementação da classe Cliente
codigo = c;
razaoSocial = r;
endereco = e;
previsaoVendas = p;
razaoSocial = r;
previsaoVendas = p;
endereco = e;
22 Estrutura de dados
2 Operações de adição e remoção de nós
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
private No inicio;
Lista ligada 23
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
{
this.inicio = null;
}
public void insereInicio(Object elemento)
{
No novoNo = new No(elemento, null); // passo 1 da figura 3
novoNo.setProximo(this.inicio); // passo 2 da figura 3
this.inicio = novoNo; // passo 3 da figura 3
}
}
// Final da classe Lista
Remoção de nó inicial
Passo 1:
Variável auxiliar copia início Início Nó 1 Nó 2 ... Nó n
Auxiliar
Passo 2:
Início ligado ao próximo nó Nó 1 Nó 2 ... Nó n
Auxiliar Início
Passo 3:
O nó ligado a auxiliar é liberado Início Nó 2 ... Nó n
Auxiliar
24 Estrutura de dados
Semelhante à implementação da operação de inserção no início da
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
Lista ligada 25
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
// Exemplo de inserção e remoção de cadastros de clientes
5000.0);
12000.0));
7000.0));
System.out.println(clienteRemovido);
26 Estrutura de dados
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
Lista ligada 27
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
}
public Object removeInicio()
{
No auxiliar = this.inicio; // passo 1 da figura 4
this.inicio = auxiliar.getProximo(); // passo 2 da figura 4
return auxiliar.getElemento(); // passo 3 da figura 4
}
public void imprimeLista() // método para imprimir todo o conteúdo da lista
{
No auxiliar = this.inicio; //auxiliar percorre a lista do início ao fim
System.out.println(″Inicio da Lista Ligada″);
while (auxiliar != null) // testa se ainda não chegou no final da lista
{
System.out.println(auxiliar.getElemento()); //imprime com o método toString
auxiliar = auxiliar.getProximo(); // passa para o próximo Nó da lista
}
System.out.println(″Final da Lista Ligada″);
}
public Object buscaElemento(long posicao) // busca o elemento na posição da lista
{
No auxiliar= this.inicio;
while ((posicao > 0) && (auxiliar != null))
{
if (posicao == 1)
return auxiliar.getElemento();
posicao--;
auxiliar = auxiliar.getProximo(); // passa para o próximo Nó da lista
}
return null; // a lista não possui elemento na posição indicada
}
public void liberaLista() // libera todos os nós da lista
{
while (inicio != null)
{
inicio = inicio.getProximo();
// o garbage collector de Java libera automaticamente o nó eliminado
}
}
}
// Final da classe Lista
28 Estrutura de dados
Por fim, utilizando essa última versão da classe Lista, o código a se-
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
listaClientes.imprimeLista();
12000.0));
listaClientes.imprimeLista();
7000.0));
listaClientes.imprimeLista();
c = (Cliente) listaClientes.buscaElemento(2);
if (c != null)
System.out.println(c);
System.out.println(c);
listaClientes.imprimeLista();
Lista ligada 29
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
listaClientes.liberaLista();
listaClientes.imprimeLista();
Considerações finais
Neste capítulo, foram apresentados os conceitos associados a listas
ligadas e como implementar esses tipos abstratos de dados. As opera-
ções de inserção, remoção, busca, listagem e liberação de elementos da
lista foram exemplificadas em aplicações e explicadas passo a passo,
para um completo entendimento dos algoritmos de implementação.
30 Estrutura de dados
Referências
Material para uso exclusivo de aluno matriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o compartilhamento digital, sob as penas da Lei. © Editora Senac São Paulo.
DEITEL, Paul J. Y.; DEITEL, Harvey M. Como programar Java. 10. ed. São Paulo:
Pearson, 2010.
Lista ligada 31