Estrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas

Post on 14-Apr-2017

168 views 3 download

Transcript of Estrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas

# 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

Alguma Dúvida?

16:38

Até a próxima aula...

leinylson@gmail.com

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