Uploaded by clemilton.fucapi

03 - Listas Encadeadas

advertisement
Listas Encadeadas
Linguagem de Programação e
Estrutura de dados
Prof. Clemilton Pereira
Como funciona uma pilha?
• Empilhar
• Desempilhar
Como funciona uma fila?
• Enfileirar
• Desenfileirar
Estruturas de dados(ED)
Definição: organização de dados e operações (algoritmos) que podem ser
aplicados sobres esses dados como forma de apoio à solução de problemas.
Exemplos de EDs:
•
Pilhas
•
Filas
•
Listas Lineares
•
Árvores
Definição de uma Lista em Python
• Uma lista é uma coleção ordenada de zero ou mais itens de um
mesmo tipo ou não.
• Python fornece um tipo de dados embutido que implemente listas
como posições contíguas de memória
E se python (ou outra
linguagem) não
tivesse tal
implementação?
Pode-se pensar em duas
Estruturas de Dados para
implementar listas:
• Listas Ordenadas
• Listas Não Ordenadas
Definição Lista Encadeada
• Em listas encadeadas, há elementos e ligações entre eles, tal que a
posição relativa do elementos seja mantida.
Definição Lista Encadeada
• Em listas encadeadas, há elementos e ligações entre eles, tal que a
posição relativa do elementos seja mantida.
Definição de Lista Encadeada
Existem três importantes classes que devem ser trabalhadas em listas
encadeadas:
•
Classe No
•
Classe ListaNaoOrdenada
•
Classe ListaOrdenada
Lista Encadeada: Classe No
• Cada objeto da classe No possui um valor associado e uma
referência para o próximo objeto da classe No.
Classe No -> Python
Classe No -> Python
Lista Encadeada: ClasseNaoOrdenada
• Uma lista não ordenada consiste de uma coleção de nós, cada um
ligado ao outro por referência. Uma vez que o nó inicial é
conhecido, os demais podem ser acessados através de sucessivas
referências.
Lista Encadeada: ClasseNaoOrdenada
• Uma lista não ordenada consiste de uma coleção de nós, cada um
ligado ao outro por referência. Uma vez que o nó inicial é
conhecido, os demais podem ser acessados através de sucessivas
referências.
Classe Lista: Implementação
Classe ListaNaoOrdenada:
Implementação
As operações comumente utilizadas em listas não ordenadas são:
•
Vazia: verifica se a lista está vazia.
•
Inserir: insere um novo item na estrutura.
•
Buscar: verifica se um determinado item está na estrutura.
•
Remover: remove um determinado item da estrutura.
•
Tamanho: retorna a quantidade de itens da estrutura.
•
Imprimir: imprime os itens da estrutura.
Classe ListaNaoOrdenada:
Implementação
Operação Vazia
Classe ListaNaoOrdenada:
Implementação
Operação Inserir
Executando o método “inserir” para
o item = 17
Classe ListaNaoOrdenada:
Implementação
Operação Inserir
Classe ListaNaoOrdenada:
Implementação
Operação Inserir
Classe ListaNaoOrdenada:
Implementação
Operação Inserir (17)
Executando o método “inserir” para
o item = 28
Classe ListaNaoOrdenada:
Implementação
Operação Inserir (28)
Classe ListaNaoOrdenada:
Implementação
Operação Inserir (28)
Classe ListaNaoOrdenada:
Implementação
Operação Inserir (28)
Executando o método “inserir” para
o item = 36
Classe ListaNaoOrdenada:
Implementação
Operação Inserir (36)
Classe ListaNaoOrdenada:
Implementação
Operação Inserir (36)
Classe ListaNaoOrdenada:
Implementação
Operação Inserir (36)
Operação Imprimir
Devemos atravessar a lista ATÉ O FIM.
Como identificar que chegamos ao final da lista?
Qual a função da variável atual?
Operação Imprimir
Devemos atravessar a lista ATÉ O FIM.
Como identificar que chegamos ao final da lista? R: Quando o nó aponta para None
Qual a função da variável atual? R: Através dela vamos percorrer a lista. Sem ela, “perderíamos a cabeça”
Operação Imprimir
A variável atual é um ponteiro, que nos permite percorrer a lista, sem perder a referência do inicio da lista.
O laço while irá continuar enquanto atual != none. Ou seja, até chegar no final da lista
Para cada elemento da lista:
imprimirmos o elemento da lista
Atualizamos a variável atual
Método __str__()
Através da implementação acima, qualquer objeto do tipo Lista pode ser impresso:
Operação Buscar
• Buscar 17
Algoritmo - Esboço
Percorra a lista elemento-a-elemento:
Caso Encontre:
Retorna Verdadeiro
Se chegou ao fim da lista:
Não encontrou elemento -> Retorna Falso
Operação Buscar
Operação tamanho
Devemos percorrer a lista, até encontrar o ultimo elemento. Ao final devemos retornar o contador
Operação tamanho
Devemos percorrer a lista, até encontrar o ultimo elemento. Ao final devemos retornar o contador
Como seria a remoção de um elemento
de uma Lista Encadeada?
Operação Remover
• Operação Remover – meio da lista
• Operação Remover – ínicio da lista:
????
Referências
http://www.ecp.ufma.br/alana/wpcontent/uploads/2017/02/AED_09_Lista_Encadeada.pdf
Download