aula 04: listas encadeadas/ligadas (estruturas...
TRANSCRIPT
1
Aula 04: Listas encadeadas/ligadas (estruturas lineares)
Algoritmos e Estruturas de Dados I
Prof. Jesús P. [email protected]
1Q-2019
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
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.’
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
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”
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)
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.
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.