Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Nó
• Lista 33 23 16 15 43 58
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
11
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
12
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
13
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
14
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
15
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
16
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
17
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
18
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
19
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
20
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
21
Prof. M.Sc. Luiz Gustavo M. Pinto – lgmpinto.unip@gmail.com
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