O documento discute listas encadeadas como uma estrutura de dados alternativa às listas do Python. Ele explica como listas encadeadas representam cada elemento como um nó e como realizar operações como inserção e remoção de elementos no início, fim e em posições arbitrárias da lista.
1. UFMA / Licenciatura em computação - Estrutura de dados
Listas encadeadas
Prof. Francisco Glaubos
Deptº. de Informática, UFMA
francisco.glaubos@ufma.br
2. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Listas encadeadas
● Pilhas e Filas baseadas em List, podem não ser eficientes.
○ operações em posições internas são custosas
● Lista encadeada
○ uma alternativa a List do Python
● Representação de uma List:
○ um grande pedaço de memória com referência a vários elementos
● Representação de uma Lista encadeada:
○ um objeto nó para cada elemento
2
3. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Listas simplesmente encadeadas
● coleção de nós
● cada nós possui:
○ o conteúdo
○ uma referência para o próximo nó da sequência
3
4. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Listas simplesmente encadeadas
4
5. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Lista simplesmente encadeada
● Referência para Início
○ necessário para se ter uma lista
● Referência para Fim
○ opcional
○ útil para localizar mais rapidamente o fim da lista
● Tamanho da lista
5
6. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Inserindo um elemento no início da lista
1. Criar um novo nó:
a. definir o seu conteúdo (elemento)
b. fazer o campo próx. apontar (referenciar) para o primeiro nó da lista.
2. Fazer o início apontar para o novo nó
6
7. UFMA / Licenciatura em computação - Estrutura de dados
Inserindo um
elemento no
início da lista
7
8. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos
Inserindo um elemento no início da lista
● Estrutura de dados Lista
8
9. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos
Inserindo um elemento no início da lista
9
10. UFMA / Licenciatura em computação - Estrutura de dados
Inserindo um
elemento no
final da lista
10
11. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos
Inserindo um elemento no final da lista
11
12. UFMA / Licenciatura em computação - Estrutura de dados
E se quisermos inserir um
elemento após um outro
elemento da lista?
12
13. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos
Inserindo após um
nó escolhido
13
14. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos
Exercício
● Elabore um algoritmo para realizar a busca de um elemento na lista. Qual a complexidade
desse algoritmo?
14
15. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos
Exercício
● Como podemos realizar a busca de um elemento na lista?
● Resposta:
15
16. UFMA / Licenciatura em computação - Estrutura de dados
Remover um
elemento do
início da lista
16
17. UFMA / Licenciatura em computação - Estrutura de dados
Como removemos um
elemento arbitrário?
17
18. UFMA / Licenciatura em computação - Estrutura de dados
Remoção de um
elemento
arbitrário
18
19. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos
Ilustração
da remoção
19
20. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos
Ilustração da remoção
20
Lista: [4 -> 3 -> 2 -> 1 -> 0 ->
None]
Removendo elementos:
Removendo o elemento 0: [4 -> 3
-> 2 -> 1 -> None]
Removendo o elemento 1: [4 -> 3
-> 2 -> None]
Removendo o elemento 2: [4 -> 3
-> None]
Removendo o elemento 3: [4 ->
None]
Removendo o elemento 4: [None]
● Saída: