aula 04: listas encadeadas/ligadas (estruturas...

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

Upload: others

Post on 09-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

1

Aula 04: Listas encadeadas/ligadas (estruturas lineares)

Algoritmos e Estruturas de Dados I

Prof. Jesús P. [email protected]

1Q-2019

2

Estruturas

(alguns autores usam o termo registro)

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

4

Exemplo

5

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

7

Listas encadeadas/ligadas

8

Lista encadeada/ligada?

3 67 -2

9

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

10NULL

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

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.

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.

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

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

15

Definição

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

16

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

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

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)

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)

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.

22

Para criar uma lista vazia

Lista com cabeça:

Lista sem cabeça:

“Mais puras”

“Mais fáceisde manipular”

23

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

3 7NULL

24

Atividades em aula

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)

26

Atividade 02: Imprimir uma lista (rec)

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.

28

Atividade 04: Adicionar ao final da lista

xAppend → (dado um elemento)

x O(n)

r

29

Outros tipos de listas encadeadas:

Lista circular

7

p

4

8

13

0

-3

A última célulaaponta para a primeira

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

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

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.

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