Escolar Documentos
Profissional Documentos
Cultura Documentos
• Composta de nós
• Organizados sequencialmente
• Listas Ligadas – não existe o movimento físico dos dados durante a inserção e
remoção de elementos
• ADT – Abstract Data Types
INÍCIO
Variável de referência especial – primeiro nó da lista
10 20 40 15 NULO
• Início – Identidade da lista / Referência que auxilia no acesso a todos os
elementos da lista
• Lista vazia – início = nulo
INÍCIO
10 20 30 40 50
10 20 30 40 50
p = p.proximo
10 20 30 40 50
p = p.proximo
10 20 30 40 50
10 20 30 40 50
No p = inicio
Aula 08 – Lista Ligada Simples
• Percorrer a Lista Ligada Simples
10 20 30 40 50
No p = inicio
imprimir(p.info)
Saída: 10
10 20 30 40 50
p = p.proximo
imprimir(p.info)
Saída: 20
10 20 30 40 50
p = p.proximo
imprimir(p.info)
Saída: 30
10 20 30 40 50
p = p.proximo
imprimir(p.info)
Saída: 40
10 20 30 40 50
p = p.proximo
imprimir(p.info)
Saída: 50
• p se torna nulo
INÍCIO
p
10 20 30 40 50
• p se torna nulo
INÍCIO
p
10 20 30 40 50
No p = inicio
enquanto (p diferente Nulo)
imprimir(p.info)
p = p.proximo
10 20 30 40 50
n = 0
No p = inicio
equanto (p diferente Nulo)
incrementa n
p = p.proximo
imprimir(‘numero de Nos ’, n)
Aula 08 – Lista Ligada Simples
• Procurar por um elemento na lista
10 20 30 40 50
10 20 30 40 50
•6 if self.inicio is None:
5 def exibirLista(self): 30 def procurarElemento(self, info):
)
7 print('lista vazia')
31 posicao = 1
32 p = self.inicio
8 return 33
9 34 while (p is not None):
10 print('lista ') 35 if (p.info == info):
11 36 break
12 p = self.inicio 37 posicao += 1
13 38 p = p.proximo
14 while (p is not None): 39
15 print(p.info + ' ') 40 if p is None:
16 p = p.proximo 41 print('%s nao encontrado na lista' % info)
17 42
18 print() 43 return False
44 else:
45 print('%s encontrado na posicao %s' % (info, posicao))
20 def contarNumeroNos(self): 46
21 n = 0 47 return True
22 p = self.inicio
23
24 while (p is not None):
25 n += 1
26 p = p.proximo
27
28 print('numero de nos na lista eh ', n)
10 20 30 40 50
No p = inicio
equanto (p.proximo diferente Nulo)
p = p.proximo
10 20 30 40 50
No p = inicio
equanto (p.proximo.proximo diferente Nulo)
p = p.proximo
10 20 30 40 50
No p = inicio • x = 30
equanto (p diferente Nulo) • Se p é nulo -> x não existe na lista
if (p.info igual x)
encerra
p = p.proximo
INÍCIO
p
10 20 30 40 50
No p = inicio • x = 30
equanto (p.proximo diferente Nulo) • p.proximo.info é 30, logo encerra o laço
if (p.proximo.info igual x) enquanto
encerra
p = p.proximo
1 2 3 4 5
10 20 30 40 50
No p = inicio • Posição x = 3
para (i igual 1; i menor x, p diferente Nulo; incrementa i)
p = p.proximo
• Inserir no final
temp
temp.proximo = inicio
inicio = temp
temp
inicio = temp
temp.proximo = inicio
temp
inicio = temp
temp
P = inicio
enquanto (p.proximo diferente Nulo)
p = p.proximo
p.proximo = temp
temp
temp.próximo = p.proximo
p.proximo = temp
temp
p.proximo = temp
temp.próximo = p.proximo
32 56 21 45 72
temp 10
32 56 21 45 72
temp 10
1 2 3 5
4 65
32 56 21 45 72
4
temp 10
return
p = self.inicio
• Remoção do primeiro nó
• Remoção do único nó
• Remoção do primeiro nó
INÍCIO
10 20 30 40 50
inicio = inicio.próximo
• Remoção do único nó
INÍCIO
10
inicio = Nulo
10 20 30 40 50
10 20 30 40 50
INÍCIO
10 20 30 40 50
INÍCIO
10 20 30 40 50
ant
p ant
prox ant
prox ant
prox ant
prox
10 20 30 40 50
p
p p p p
anterior = Nulo • Necessita 3 referências
P = inicio • anterior, p, proximo
inicio = anterior