Top Banner
1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos e Estruturas de Dados I Prof. Jesús P. Mena-Chalco [email protected] 1Q-2019
33

Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

Jul 09, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

1

Aula 04: Listas encadeadas/ligadas (estruturas lineares)

Algoritmos e Estruturas de Dados I

Prof. Jesús P. [email protected]

1Q-2019

Page 2: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

2

Estruturas

(alguns autores usam o termo registro)

Page 3: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

3

Linguagem C: Tipos de dados

Tipos de dados primários.Tipos de dados derivados.Tipos definidos pelo usuário.

(*) Fonte: http://www.studytonight.com/c/datatype-in-c.php

Page 4: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

4

Exemplo

Page 5: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

5

Page 6: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

6

In September 1956 IBM launched the 305 RAMAC, the first ‘SUPER’ computer with a hard disk drive (HDD). The HDD weighed over a ton and stored 5 MB of data.’

Page 7: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

7

Listas encadeadas/ligadas

Page 8: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

8

Lista encadeada/ligada?

3 67 -2

Page 9: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

9

Estação Consolação: “Quatro estações” (1991). Mosaico abstrato feito de pastilhas vitrificadas por Tomie Ohtake

Page 10: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

10NULL

Estação Consolação: “Quatro estações” (1991). Mosaico abstrato feito de pastilhas vitrificadas por Tomie Ohtake

Page 11: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

11

Listas encadeadas

Uma lista encadeada é uma representação de uma sequência de objetos na memória do computador.

As células que armazenam elementos consecutivos da sequência não ficam necessariamente em posições consecutivas da memória.

Page 12: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

12

Listas encadeadas

Uma lista encadeada é uma representação de uma sequência de objetos na memória do computador.

As células que armazenam elementos consecutivos da sequência não ficam necessariamente em posições consecutivas da memória.

Page 13: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

13

Definição

Uma lista encadeada é uma sequência de registros/structs que armazenam células/nós.→ Cada nó contém um objeto de determinado tipo.→ Cada nó contém o endereço para o nó seguinte.

3 6 7 -2 No caso da últimacélula, o endereço

é NULL

Page 14: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

14

Definição

Suporemos que os objetos armazenados nos nós são do tipo int.

A estrutura de nós pode ser definida como:

3 7

Page 15: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

15

Definição

É conveniente tratar os nós como um novo tipo de dados, que chamaremos Node:

Page 16: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

16

Page 17: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

17

Se p é um endereço para um nó:→ como acessar ao conteúdo desse nó?→ como obter o endereço do nó seguinte?

7p

c

Page 18: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

18

Listas

O endereço de uma lista encadeada é o endereço de seu primeiro nó.

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

p

Page 19: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

19

Operações em vetores

Busca → (dado um elemento)

O(n) ou O(lg n)

Remoção → (dado um índice)

O(n)

Inserção → (dado um índicee um elemento)

O(n)

Page 20: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

20

Operações considerando listas encadeadas

Busca → (dado um elemento)

O(n)

Remoção → (dado um ponteiro)

O(1)

Inserção → (dado um ponteiroe um elemento)

O(1)

Page 21: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

21

Listas com cabeça e sem cabeça

Uma lista encadeada pode ser vista de 2 maneiras diferentes, dependendo do papel que seu primeiro nó desempenha.

Lista com cabeça:O primeiro nó serve, apenas, para marcar o início da lista (seu conteúdo é irrelevante).

Lista sem cabeça:O conteúdo do primeiro elemento é tão relevante quanto o dos demais.

Page 22: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

22

Para criar uma lista vazia

Lista com cabeça:

Lista sem cabeça:

“Mais puras”

“Mais fáceisde manipular”

Page 23: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

23

Uma lista (sem cabeça) com 2 nós

3 7NULL

Page 24: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

24

Atividades em aula

Page 25: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

25

Atividade 01: Imprimir uma lista

Cria uma lista com 21 nós, na sequência: 0 → 1 → 2 → … → 19 → 20

Função que imprime uma lista dada o endereço inicial (raiz)

Page 26: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

26

Atividade 02: Imprimir uma lista (rec)

Page 27: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

27

Atividade 03: Busca por um elemento

xBusca → (dado um elemento)

x O(n)

pr

Se o elemento não existir, na lista, a função devolve NULL.

Page 28: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

28

Atividade 04: Adicionar ao final da lista

xAppend → (dado um elemento)

x O(n)

r

Page 29: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

29

Outros tipos de listas encadeadas:

Lista circular

7

p

4

8

13

0

-3

A última célulaaponta para a primeira

Page 30: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

30

Outros tipos de listas encadeadas:

Lista duplamente encadeada

7

p

9 -2 75

q

NULL NULL

Cada célula contém o endereçoda célula anterior e o da

seguinte

Page 31: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

Resumo

Listas

Listas com arranjosListas com arranjos

Listas ligadas/encadeadas/enlaçadasListas ligadas/encadeadas/enlaçadas

- Simples para usar- Alocação em bloco contínuo- Acesso a um item em tempo constante

- Simples para usar- Alocação em bloco contínuo- Acesso a um item em tempo constante

- Não requer conhecer a quantidade de itens previamente

- Inserção e remoção não requer deslocamentos

- Não requer conhecer a quantidade de itens previamente

- Inserção e remoção não requer deslocamentos

- Requer saber a quantidade de itens previamente (para alocação)

- Inserção/Remoção requer deslocamentos- Expansão custosa (realocar e copiar)

- Requer saber a quantidade de itens previamente (para alocação)

- Inserção/Remoção requer deslocamentos- Expansão custosa (realocar e copiar)

- Acesso a uma posição necessita percorrer a lista- Memória extra para os ponteiros

- Acesso a uma posição necessita percorrer a lista- Memória extra para os ponteiros

Page 32: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

32

Nós e filhos

“Carga útil”

Campos que dãoestrutura à árvore

→ O nó folha (=leaf) é um nó que não tem filho algum.→ Se x tiver um pai, essa árvore é uma subárvore de alguma árvore maior.

Page 33: Aula 04: Listas encadeadas/ligadas (estruturas lineares)professor.ufabc.edu.br/~jesus.mena/courses/aed1-1q... · 1 Aula 04: Listas encadeadas/ligadas (estruturas lineares) Algoritmos

33

Árvores

São estruturas não lineares.

Representação natural para dados aninhados.

Muito úteis para resolver uma enorme variedade do problema envolvendo algoritmos.

Não é uma árvore