Você está na página 1de 25

J15B - ESTRUTURA DE DADOS

MÓDULO IV
Listas
Prof. M.Sc. Luiz Gustavo Miranda Pinto
luiz.pinto1@docente.unip.br
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Tópicos
• Introdução de Listas
• Implementando uma Lista Encadeada
• Lista no Java

2
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Definição de Listas
• Aplicações:
• Cadastro de funcionários
• Itens em estoque
• Cartas de baralho
• etc...
• Em uma Lista podemos realizar as seguintes operações básicas
• Criação da Lista
• Inserção de um elemento
• Exclusão de um elemento
• Acesso a um elemento
• Destruição da Lista
• etc...
3
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Introdução de Listas
• Uma estrutura do tipo Lista é uma sequência de elementos do mesmo tipo.
• Seus elementos possuem estrutura interna abstraída
• Sua complexidade é arbitrária e não afeta seu funcionamento

• Lista 33 23 16 15 43 58

• Uma Lista pode possuir MAX (MAX >= 0) elementos


• Se MAX = 0, dizemos que a Lista está vazia

4
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Definição de Listas
• Essas operações dependem do tipo de alocação de memória utilizada
• Estática
• Dinâmica
• Alocação Estática
• O espaço de memória é alocado no momento da compilação
• Exige a definição do número máximo de elementos da Lista (n)
• Acesso sequencial: elementos consecutivos na memória

quantidade 3

dados
33 23 16

0 MAX - 1
5
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Definição de Listas
• Essas operações dependem do tipo de alocação de memória utilizada
• Estática
• Dinâmica
• Alocação Estática
• O espaço de memória é alocado no momento da compilação
• Exige a definição do número máximo de elementos da Lista (n)
• Acesso sequencial: elementos consecutivos na memória

quantidade 4

dados
33 23 16 47

0 MAX - 1
6
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Definição de Listas
• Essas operações dependem do tipo de alocação de memória utilizada
• Estática
• Dinâmica
• Alocação Estática
• O espaço de memória é alocado no momento da compilação
• Exige a definição do número máximo de elementos da Lista (n)
• Acesso sequencial: elementos consecutivos na memória

quantidade 5

dados
33 23 16 47 12

0 MAX - 1
7
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Definição de Listas
• Alocação Dinâmica
• O espaço de memória é alocado em tempo de execução
• A lista cresce à medida que novos elementos são armazenados
• A lista diminui à medida que elementos são removidos
• Acesso encadeado: cada elemento pode estar em uma área distinta da memória
• Para acessar um elemento, é preciso percorrer todos os seus antecessores na Lista
início
Noh
dado
prox

dados
33 23 16

NULL

8
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Definição de Listas
• Alocação Dinâmica
• O espaço de memória é alocado em tempo de execução
• A lista cresce à medida que novos elementos são armazenados
• A lista diminui à medida que elementos são removidos
• Acesso encadeado: cada elemento pode estar em uma área distinta da memória
• Para acessar um elemento, é preciso percorrer todos os seus antecessores na Lista
início
Noh
dado
prox

dados
33 23 16 47

NULL

9
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Definição de Listas
• Alocação Dinâmica
• O espaço de memória é alocado em tempo de execução
• A lista cresce à medida que novos elementos são armazenados
• A lista diminui à medida que elementos são removidos
• Acesso encadeado: cada elemento pode estar em uma área distinta da memória
• Para acessar um elemento, é preciso percorrer todos os seus antecessores na Lista
início
Noh
dado
prox

dados
33 23 16 47 12

NULL

10
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Lista Encadeada


• Estruturas Auxiliares

11
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Lista Encadeada


• Inicialização da Lista

12
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Lista Encadeada


• Tamanho da Lista

13
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Lista Encadeada


• Lista Vazia

14
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Lista Encadeada


• Existem 3 tipos de Inserção:
• Início
• Meio
• Fim

15
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Lista Encadeada


• Também existe o caso onde a inserção é feita em uma Lista que está vazia

16
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Lista Encadeada


• Inserção

17
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Lista Encadeada


• Existem 3 tipos de Remoção:
• Início
• Meio
• Fim

18
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Lista Encadeada


• Existem 3 tipos de Remoção:
• Início
• Meio
• Fim

19
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Lista Encadeada


• Existem 3 tipos de Remoção:
• Início
• Meio
• Fim

20
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Lista Encadeada


• Os três tipos de remoção trabalham juntos
• Podem remover qualquer elemento dentro da lista
• Cuidado
• Não se pode remover um elemento de uma lista vazia
• Removendo o último nó a lista fica vazia

21
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Implementando uma Lista Encadeada


• Remoção

22
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Lista no Java
• O Java possui uma classe que disponibiliza uma lista.
• Para isso, basta declarar a “java.util.ArrayList”.
• Ela armazena objetos, estruturas ou tipos primitivos.

23
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Lista no Java
• Diversos métodos para a manipulação da lista:
• add – Adicionar um elemento na lista.
• indexOf – Procura a posição do elemento. Caso não encontre, retorna -1.
• sort – Ordena a lista.
• Remove – Remove um elemento da lista.

24
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com

Referências
• Ascencio, A. F. G.; Aráujo, G. S. Estruturas de Dados - Algoritmos, Análise de
Complexidade em Java e C / C++. São Paulo – Pearson Prentice Hall, 2010.
• Backes, A. Notas de Aula. Faculdade de Computação – FACOM, Universidade Federal
de Uberlândia – UFU. Aulas disponíveis em: http://www.facom.ufu.br/~backes/.
• Mathias, S. B. B. R. P. Notas de Aula: Disciplina de Estrutura de Dados, Código J15B,
Universidade Paulista – UNIP, 2020.
• Wainer, J. Notas de Aula. Instituto de Computação, Universidade de Campinas –
UNICAMP. Aulas disponíveis em: https://www.ic.unicamp.br/~wainer/
• Ziviani, N. Projeto de Algoritmos com Implementações em C e Pascal. 4 ed. São Paulo
– Pioneira, 1999.

25

Você também pode gostar