estrutura de dados aula 09 - listas simplesmente encadeadas

74
# Estrutura de Dados # Aula 09 Listas Simplesmente Encadeadas Prof. Leinylson Fontinele Pereira

Upload: leinylson-fontinele

Post on 12-Apr-2017

266 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

# Estrutura de Dados #

Aula 09 – Listas Simplesmente Encadeadas

Prof. Leinylson Fontinele Pereira

Page 2: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Na aula anterior... Aula de Revisão de CPonteirosFunçõesetc

Aula 09 – Listas Simplesmente Encadeadas

Page 3: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

3

Introdução

02:54 Aula 09 – Listas Simplesmente Encadeadas

Page 4: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

O que vamos aprender? Listas Simplesmente

Encadeadas#Propriedades#Operações fundamentais

Aula 09 – Listas Simplesmente Encadeadas

Page 5: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

5

Vamos começar?

02:54 Aula 09 – Listas Simplesmente Encadeadas

Page 6: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Dinâmica Encadeada

Aula 09 – Listas Simplesmente Encadeadas

Page 7: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Dinâmica Encadeada

Aula 09 – Listas Simplesmente Encadeadas

Listas encadeadas ou listas ligadas representam uma seqüência de objetos na memó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

Page 8: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Listas Encadeadas

Aula 09 – Listas Simplesmente Encadeadas

Page 9: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Listas Encadeadas

Aula 09 – Listas Simplesmente Encadeadas

Page 10: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Listas Encadeadas: Representação por ponteiros

Aula 09 – Listas Simplesmente Encadeadas

Page 11: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Listas Encadeadas: Representação por ponteiros

Aula 09 – Listas Simplesmente Encadeadas

Representação gráfica de um elemento da lista:

Page 12: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Listas Encadeadas: Representação por ponteiros

Aula 09 – Listas Simplesmente Encadeadas

Cada item em particular de uma lista pode ser chamado de elemento, nó, célula, ou item.

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.

Page 13: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserção no Início

Aula 09 – Listas Simplesmente Encadeadas

O endereço armazenado no ponteiro p deve ser alterado para o endereço do item a ser acrescido à lista.

Page 14: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserção no Final

Aula 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.

Page 15: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Endereços e Listas

Aula 09 – Listas Simplesmente Encadeadas

O endereço de uma lista encadeada é o endereço de sua primeira célula.

Se pé o endereço de uma lista, podemos dizer, “p é uma lista”.

Page 16: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Dinâmica Encadeada

Aula 09 – Listas Simplesmente Encadeadas

Cada elemento é tratado como um ponteiro que é alocado dinamicamente, a medida que os dados são inseridos.

Para guardar o primeiro elemento, utilizamos um ponteiro para ponteiro

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 o conteúdo do ponteiro para ponteiro.

Page 17: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Simplesmente Encadeada

Aula 09 – Listas Simplesmente Encadeadas

O número de elementos na lista dependerá da memória disponívelNuma lista encadeada, para cada novo elemento inserido na

estrutura, alocamos um espaço de memória para armazená-lo. Desta forma, o espaço total de memória gasto pela estrutura é proporcional ao número de elementos nela armazenado.

No entanto, não podemos garantir que os elementos armazenados na lista ocuparão um espaço de memória contíguo, portanto não temos acesso direto aos elementos da lista.

Para que seja possível percorrer todos os elementos da lista, devemos explicitamente guardar o encadeamento dos elementos, o que é feito armazenando-se, junto com a informação de cada elemento, um ponteiro para o próximo elemento da lista.

Page 18: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Simplesmente Encadeada

Aula 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, o espaço total de memória gasto pela estrutura é proporcional ao número de elementos nela armazenado.

Page 19: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Simplesmente Encadeada

Aula 09 – Listas Simplesmente Encadeadas

Do primeiro elemento, podemos alcançar o segundo seguindo o encadeamento, e assim por diante.

O último elemento da lista aponta para NULL, sinalizando que não existe um próximo elemento.

Page 20: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserção de um novo elemento no início da lista

Aula 09 – Listas Simplesmente Encadeadas

Page 21: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Remoção do primeiro elemento da lista

Aula 09 – Listas Simplesmente Encadeadas

Page 22: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Remoção de um elemento no meio da lista

Aula 09 – Listas Simplesmente Encadeadas

Page 23: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserção de um elemento no meio da lista

Aula 09 – Listas Simplesmente Encadeadas

Page 24: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Dinâmica Encadeada

Aula 09 – Listas Simplesmente Encadeadas

Page 25: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Dinâmica Encadeada

Aula 09 – Listas Simplesmente Encadeadas

Vantagens Melhor utilização dos recursos de memória

Não precisa movimentar os elementos nas operações de inserção e remoção

Page 26: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Dinâmica Encadeada

Aula 09 – Listas Simplesmente Encadeadas

Page 27: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Dinâmica Encadeada

Aula 09 – Listas Simplesmente Encadeadas

Desvantagens Acesso indireto aos elementos Necessidade de percorrer a lista para acessar um elemento

Page 28: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Dinâmica Encadeada

Aula 09 – Listas Simplesmente Encadeadas

Page 29: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Dinâmica Encadeada Quando utilizar?

Não há necessidade de garantir um espaço mínimo para a execução do aplicativo

Inserção/remoção em lista ordenada são as operações mais frequentes

Aula 09 – Listas Simplesmente Encadeadas

Page 30: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

30

Concluindo...

02:54 Aula 09 – Listas Simplesmente Encadeadas

Page 31: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Nesta aula aprendemos... Listas Simplesmente

Encadeadas#Propriedades#Operações fundamentais

Aula 09 – Listas Simplesmente Encadeadas

Page 32: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Material: https://sites.google.com/site/leinylsonnassau

Material baseado nas aulas de:

Aula 09 – Listas Simplesmente Encadeadas

Page 33: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Alguma Dúvida?

Até a próxima

[email protected]

Page 34: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

34

Prática

02:54

As aulas práticas foram baseadas no material de

Linguagem C Descomplicada , Dr. André R. Backes.

Disponível em: https://programacaodescomplicada.wordp

ress.com/Aula 09 – Listas Simplesmente Encadeadas

Page 35: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Dinâmica Encadeada ListaDinEncad.h

Os protótipos das funções O tipo de dado armazenado na lista O ponteiro lista

Aula 09 – Listas Simplesmente Encadeadas

Page 36: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Lista Dinâmica Encadeada

ListaDinEncad.c O tipo de dados lista Implementar as suas funções

Aula 09 – Listas Simplesmente Encadeadas

Page 37: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

3702:54

Definindo a Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 38: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Definindo a Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 39: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

3902:54

Criando a Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 40: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Criando a Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 41: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

4102:54

Destruindo a Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 42: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Destruindo a Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 43: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Destruindo a Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 44: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

4402:54

Tamanho da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 45: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Tamanho da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 46: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Tamanho da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 47: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

4702:54

A Lista está Cheia?

Aula 09 – Listas Simplesmente Encadeadas

Page 48: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

A Lista está Cheia?

Aula 09 – Listas Simplesmente Encadeadas

Page 49: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

4902:54

A Lista está Vazia?

Aula 09 – Listas Simplesmente Encadeadas

Page 50: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

A Lista está Vazia?

Aula 09 – Listas Simplesmente Encadeadas

Page 51: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

5102:54

Inserindo na Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 52: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserindo na Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 53: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserindo numa Lista Vazia

Aula 09 – Listas Simplesmente Encadeadas

Page 54: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserindo no Início da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 55: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserindo no Início da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 56: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserindo no Final da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 57: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserindo no Final da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 58: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserindo de Forma Ordenada na Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 59: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserindo de Forma Ordenada na Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 60: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Inserindo de Forma Ordenada na Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 61: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

6102:54

Remoção na Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 62: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Observações sobre Remoção

Aula 09 – Listas Simplesmente Encadeadas

Page 63: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Remoção do Início da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 64: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Remoção do Início da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 65: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Remoção do Meio da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 66: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Remoção do Meio da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 67: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Remoção do Meio da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 68: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Remoção do Final da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 69: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Remoção do Final da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 70: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Remoção do Final da Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 71: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

7102:54

Consulta na Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 72: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Consulta na Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 73: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Consulta pela Posição na Lista

Aula 09 – Listas Simplesmente Encadeadas

Page 74: Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

02:54

Consulta pelo Conteúdo da Lista

Aula 09 – Listas Simplesmente Encadeadas