# Estrutura de Dados #Aula 09 – Listas Simplesmente Encadeadas
Prof. Leinylson Fontinele Pereira
Na aula anterior...
Recursão# Conceito
# Utilização
# Exemplos
16:38 Aula 09 – Listas Simplesmente Encadeadas
Introdução
16:38 3 Aula 09 – Listas Simplesmente Encadeadas
O que vamos aprender?
Listas Simplesmente Encadeadas# Propriedades
# Operações fundamentais
16:38 Aula 09 – Listas Simplesmente Encadeadas
Vamos começar?
16:38 5 Aula 09 – Listas Simplesmente Encadeadas
16:38
Lista Dinâmica Encadeada
Aula 09 – Listas Simplesmente Encadeadas
Dinâmico?
16:38Aula 09 – Listas Simplesmente Encadeadas
Vetores são estruturasque precisam ter seutamanho bem definidos!
Listas podem crescer atéa memória estourar!!
Alocação Sequencial Vs Alocação Encadeada
16:38Aula 09 – Listas Simplesmente Encadeadas
Lista Dinâmica Encadeada
16:38Aula 09 – Listas Simplesmente Encadeadas
Listas encadeadas ou listas ligadas representam uma sequência de objetos namemória do computador
Exemplo: Lista de afazeres1. Comprar uma lâmpada2. Trocar uma lâmpada queimada3. Procurar uma conta no quarto4. Pagar uma conta na internet5. Desligar o computador6. Dormir
Listas Encadeadas
16:38Aula 09 – Listas Simplesmente Encadeadas
PróximaaçãoAção atual
Listas Encadeadas
16:38Aula 09 – Listas Simplesmente Encadeadas
21. Comprar lâmpada
32. Trocar lâmpada
43. Procurar conta
54. Pagar conta
65. Desligar micro
fim6. Dormir
Listas Encadeadas
16:38Aula 09 – Listas Simplesmente Encadeadas
DormirDesligar micro
Pagar conta
Procurar conta
Trocar lâmpada
Comprar lâmpada
Tarefa:
Índice: 1 2 3 4 5 6
Listas Encadeadas
16:38Aula 09 – Listas Simplesmente Encadeadas
DormirDesligar micro
Pagar contaLigar micro
Procurar conta
Trocar lâmpada
Comprar lâmpada
Tarefa:
Índice: 1 2 3 4 5 6 7
Listas Encadeadas: Representação por ponteiros
16:38Aula 09 – Listas Simplesmente Encadeadas
Listas Encadeadas: Representação por ponteiros
16:38Aula 09 – Listas Simplesmente Encadeadas
Representação gráfica de um elemento da lista:
Listas Encadeadas: Representação por ponteiros
16:38Aula 09 – Listas Simplesmente Encadeadas
Cada item em particular de uma lista pode ser chamado de elemento, nó, célula, ouitem.
O apontador para o início da lista também é tratado como se fosse uma célula(cabeça), para simplificar as operações sobre a lista.
O símbolo / representa o ponteiro nulo (NULL), indicando o fim da lista.
Inserção no Início
16:38Aula 09 – Listas Simplesmente Encadeadas
O endereço armazenado no ponteiro 𝑝 deve ser alterado parao endereço do item a ser acrescido à lista.
p 5 2 /4
3
Inserção no Final
16:38Aula 09 – Listas Simplesmente Encadeadas
O endereço armazenado em p será alterado caso a lista esteja vazia ou
O campo prox do último item será alterado.
Inserção no Meio
16:38Aula 09 – Listas Simplesmente Encadeadas
2 /4
5
3p
lista[5].prox ← lista[2]
lista[3].prox ← 5
Remoção do Início
16:38Aula 09 – Listas Simplesmente Encadeadas
p 5 2 /4
Remoção do Final
16:38Aula 09 – Listas Simplesmente Encadeadas
/3p
/
3 /5p
Remoção do Meio
16:38Aula 09 – Listas Simplesmente Encadeadas
5 2 /43p
lista[3].prox ← lista[5].prox
Endereços e Listas
16:38Aula 09 – Listas Simplesmente Encadeadas
O endereço de uma lista encadeada é o endereço de sua primeira célula.
Se 𝑝 é o endereço de uma lista, podemos dizer, “𝑝 é uma lista”.
Representação Usual de uma Lista Encadeada
16:38Aula 09 – Listas Simplesmente Encadeadas
Definição de Tipos e Variáveis
16:38Aula 09 – Listas Simplesmente Encadeadas
Operações
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Info de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Info de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Info de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Info de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Info de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Info de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Info de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Next de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Next de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Next de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Next de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Next de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Next de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Acessando e Atualizando o Campo Next de um Nó
16:38Aula 09 – Listas Simplesmente Encadeadas
Movendo Ponteiros
16:38Aula 09 – Listas Simplesmente Encadeadas
Movendo Ponteiros
16:38Aula 09 – Listas Simplesmente Encadeadas
Movendo Ponteiros
16:38Aula 09 – Listas Simplesmente Encadeadas
Movendo Ponteiros
16:38Aula 09 – Listas Simplesmente Encadeadas
Movendo Ponteiros
16:38Aula 09 – Listas Simplesmente Encadeadas
Alocando e Desalocando Nós
16:38Aula 09 – Listas Simplesmente Encadeadas
Alocando e Desalocando Nós
16:38Aula 09 – Listas Simplesmente Encadeadas
Alocando e Desalocando Nós
16:38Aula 09 – Listas Simplesmente Encadeadas
Alocando e Desalocando Nós
16:38Aula 09 – Listas Simplesmente Encadeadas
Alocando e Desalocando Nós
16:38Aula 09 – Listas Simplesmente Encadeadas
Alocando e Desalocando Nós
16:38Aula 09 – Listas Simplesmente Encadeadas
Alocando e Desalocando Nós
16:38Aula 09 – Listas Simplesmente Encadeadas
Lista Dinâmica Encadeada
16:38Aula 09 – Listas Simplesmente Encadeadas
Cada elemento é tratado como um ponteiro que é alocadodinamicamente, a medida que os dados são inseridos.
Para guardar o primeiro elemento, utilizamos um ponteiro paraponteiro
Um ponteiro para ponteiro pode guardar o endereço de um ponteiro.
Assim, fica fácil mudar quem está no início da lista mudando oconteúdo do ponteiro para ponteiro.
Lista Simplesmente Encadeada
16:38Aula 09 – Listas Simplesmente Encadeadas
O número de elementos na lista dependerá da memória disponível
Numa lista encadeada, para cada novo elemento inserido na estrutura, alocamosum espaço de memória para armazená-lo. Desta forma, o espaço total de memóriagasto pela estrutura é proporcional ao número de elementos nela armazenado.
No entanto, não podemos garantir que os elementos armazenados na lista ocuparãoum espaço de memória contíguo, portanto não temos acesso direto aos elementosda lista.
Para que seja possível percorrer todos os elementos da lista, devemos explicitamenteguardar o encadeamento dos elementos, o que é feito armazenando-se, junto com ainformação de cada elemento, um ponteiro para o próximo elemento da lista.
Lista Simplesmente Encadeada
16:38Aula 09 – Listas Simplesmente Encadeadas
O número de elementos na lista dependerá da memória disponível
Numa lista encadeada, para cada novo elemento inserido na estrutura,alocamos um espaço de memória para armazená-lo. Desta forma, oespaço total de memória gasto pela estrutura é proporcional ao númerode elementos nela armazenado.
Lista Simplesmente Encadeada
16:38Aula 09 – Listas Simplesmente Encadeadas
Do primeiro elemento, podemos alcançar o segundo seguindo oencadeamento, e assim por diante.
O último elemento da lista aponta para NULL, sinalizando que nãoexiste um próximo elemento.
Inserção de um novo elemento no início da lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Remoção do primeiro elemento da lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Remoção de um elemento no meio da lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Inserção de um elemento no meio da lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Lista Dinâmica Encadeada
16:38Aula 09 – Listas Simplesmente Encadeadas
Lista Dinâmica Encadeada
16:38Aula 09 – Listas Simplesmente Encadeadas
Vantagens
Melhor utilização dos recursos de memória
Não precisa movimentar os elementos nasoperações de inserção e remoção
Lista Dinâmica Encadeada
16:38Aula 09 – Listas Simplesmente Encadeadas
Lista Dinâmica Encadeada
16:38Aula 09 – Listas Simplesmente Encadeadas
Desvantagens
Acesso indireto aos elementos
Necessidade de percorrer a lista para acessarum elemento
Lista Dinâmica Encadeada
16:38Aula 09 – Listas Simplesmente Encadeadas
Lista Dinâmica Encadeada
16:38
Quando utilizar?
Não há necessidade de garantir um espaço mínimopara a execução do aplicativo
Inserção/remoção em lista ordenada são as operaçõesmais frequentes
Aula 09 – Listas Simplesmente Encadeadas
Melhorando a Lista
16:38 67Estruturaaaaaaa
Melhorando a Lista
16:38 68Estruturaaaaaaa
Concluindo...
16:38 69 Aula 09 – Listas Simplesmente Encadeadas
Nesta aula aprendemos... Listas Simplesmente Encadeadas
# Propriedades
# Operações fundamentais
16:38 Aula 09 – Listas Simplesmente Encadeadas
Na próxima aula veremos... Listas Simplesmente Encadeadas
# Prática no laboratório
16:38 Aula 09 – Listas Simplesmente Encadeadas
Material: https://sites.google.com/site/leinylsonuespi
16:38
Material baseado nas aulas de:
Aula 09 – Listas Simplesmente Encadeadas
Prática
16:38 74
As aulas práticas foram baseadas no material de
Linguagem C Descomplicada , Dr. André R. Backes.
Disponível em: https://programacaodescomplicada.wordpress.com/
Aula 09 – Listas Simplesmente Encadeadas
Lista Dinâmica Encadeada
16:38
ListaDinEncad.h
Os protótipos das funções
O tipo de dado armazenado na lista
O ponteiro lista
Aula 09 – Listas Simplesmente Encadeadas
Lista Dinâmica Encadeada
16:38
ListaDinEncad.c
O tipo de dados lista
Implementar as suas funções
Aula 09 – Listas Simplesmente Encadeadas
16:38 77
Definindo a Lista
Aula 09 – Listas Simplesmente Encadeadas
Definindo a Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
16:38 79
Criando a Lista
Aula 09 – Listas Simplesmente Encadeadas
Criando a Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
16:38 81
Destruindo a Lista
Aula 09 – Listas Simplesmente Encadeadas
Destruindo a Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Destruindo a Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
16:38 84
Tamanho da Lista
Aula 09 – Listas Simplesmente Encadeadas
Tamanho da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Tamanho da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
16:38 87
A Lista está Cheia?
Aula 09 – Listas Simplesmente Encadeadas
A Lista está Cheia?
16:38Aula 09 – Listas Simplesmente Encadeadas
16:38 89
A Lista está Vazia?
Aula 09 – Listas Simplesmente Encadeadas
A Lista está Vazia?
16:38Aula 09 – Listas Simplesmente Encadeadas
16:38 91
Inserindo na Lista
Aula 09 – Listas Simplesmente Encadeadas
Inserindo na Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Inserindo numa Lista Vazia
16:38Aula 09 – Listas Simplesmente Encadeadas
Inserindo no Início da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Inserindo no Início da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Inserindo no Final da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Inserindo no Final da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Inserindo de Forma Ordenada na Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Inserindo de Forma Ordenada na Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Inserindo de Forma Ordenada na Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
16:38 101
Remoção na Lista
Aula 09 – Listas Simplesmente Encadeadas
Observações sobre Remoção
16:38Aula 09 – Listas Simplesmente Encadeadas
Remoção do Início da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Remoção do Início da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Remoção do Meio da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Remoção do Meio da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Remoção do Meio da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Remoção do Final da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Remoção do Final da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Remoção do Final da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
16:38 111
Consulta na Lista
Aula 09 – Listas Simplesmente Encadeadas
Consulta na Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Consulta pela Posição na Lista
16:38Aula 09 – Listas Simplesmente Encadeadas
Consulta pelo Conteúdo da Lista
16:38Aula 09 – Listas Simplesmente Encadeadas