Escolar Documentos
Profissional Documentos
Cultura Documentos
Computação
Estruturas de Dados e
Paradigmas
Aula 05
Prof. Anderson Silva
Preliminares
Objetivo da Disciplina
● Conhecer os principais paradigmas de programação,
suas características e aplicabilidade
Plano de Estudos
Aulas Descrição
Estruturas de Dados
● Listas Lineares
● Ponteiros
● Pilhas e Filas
● Listas encadeadas
Introdução
Exemplo
Você foi contratado para desenvolver o sistema para um site de compras.
O sistema deverá armazenar em memória uma lista de todos clientes
ativos no site: chave do cliente, seu nome e carrinho de compras com até
3 produtos.
Introdução
Exemplo
Você foi contratado para desenvolver o sistema para um site de compras.
O sistema deverá armazenar em memória uma lista de todos clientes
ativos no site: chave do cliente, seu nome e carrinho de compras com até
3 produtos.
Exemplo
Você foi contratado para desenvolver o sistema para um site de compras.
O sistema deverá armazenar em memória uma lista de todos clientes
ativos no site: chave do cliente, seu nome e carrinho de compras com até
3 produtos.
prod1
CLIENTE
prod2
chave nome Carrinho
de compras
prod3
Introdução
Exemplo
Podemos representar esta lista de
clientes através de uma lista linear.
Nó 0 Nó 1 Nó 2 Nó 3 …
##
Qual deve ser o tamanho máximo chave nome Carrinho
desta lista?
p1 p2 p3
Introdução
Qual o Problema?
● Alocação estática de memória
○ Reservar pouca memória pode
proporcionar recursos insuficientes
em situações extremas
○ Reservar muita memória pode
ocupar recursos demais mesmo em
situações de pouca carga de dados.
Introdução
Proposta
● Alocação dinâmica de memória
○ Solicita mais memória conforme
uso por parte do sistema.
○ Libera memória em situações em
que esta não está mais sendo
utilizada.
Listas Encadeadas
Saída
>> 10
Listas Encadeadas
Listas Encadeadas
● Reservam dinamicamente memória para cada novo elemento inserido na
lista.
● Memória ocupada é proporcional ao número de elementos presentes na
lista
● Não necessariamente os elementos são armazenados em posições
contíguas
Listas Encadeadas
Valor
Ponteiro para
próximo nó
Listas Encadeadas
Valor
Ponteiro para
próximo nó
Listas Encadeadas
LISTA
Listas Encadeadas
Nó 0 * Criamos um novo nó
LISTA
Listas Encadeadas
Nó 0 * Criamos um novo nó
Apontamos o início da lista
LISTA
Listas Encadeadas
Nó 0 * Criamos um novo nó
LISTA Nó 1 *
Listas Encadeadas
Nó 0 * Criamos um novo nó
Apontamos para o primeiro
elemento
LISTA Nó 1 *
Listas Encadeadas
Nó 0 * Criamos um novo nó
Apontamos para o primeiro
elemento
LISTA Nó 1 *
Lista aponta para novo nó
Listas Encadeadas
Nó 1 * Nó 0 *
LISTA
Listas Encadeadas
Criamos um novo nó
Nó 1 * Nó 0 *
LISTA Nó 2 *
Listas Encadeadas
Criamos um novo nó
Nó 1 * Nó 0 *
Apontamos para o primeiro elemento
LISTA Nó 2 *
Listas Encadeadas
Criamos um novo nó
Nó 1 * Nó 0 *
Apontamos para o primeiro elemento
Lista aponta para novo nó
LISTA Nó 2 *
Listas Encadeadas
Nó 2 * Nó 1 * Nó 0 *
LISTA
Listas Encadeadas
Definições Iniciais
Listas Encadeadas
Função inserir
Listas Encadeadas
Inserção de valores
Listas Encadeadas
LISTA
10010
Chave
procurada
Listas Encadeadas
LISTA
10010
Chave
procurada
Listas Encadeadas
LISTA
10010
Chave
procurada
Listas Encadeadas
LISTA
10010
Chave
procurada
Listas Encadeadas
LISTA
10010
Chave
procurada
Listas Encadeadas
LISTA
10010
Chave
procurada
Listas Encadeadas
LISTA
10010
Chave a
Remover
Listas Encadeadas
LISTA
10010
Chave a
Remover
Listas Encadeadas
LISTA
10010
Chave a
Remover
Listas Encadeadas
Anterior
LISTA
10010
Chave a
Remover
Listas Encadeadas
Anterior
LISTA
10010
Chave a
Remover
Listas Encadeadas
Anterior
LISTA
10010
Chave a
Remover
Listas Encadeadas
Anterior
LISTA 10010 *
10010
Chave a
Remover
Listas Encadeadas
Anterior
LISTA 10010 *
10010
Chave a
Remover
Listas Encadeadas
Anterior
LISTA 10010 *
10010
Libera memória do Chave a
nó removido Remover
Listas Encadeadas
Tarefa:
1. Implemente a função “Listar todos” da lista encadeada
2. Implemente uma função para remover um item de uma
posição específica da lista (exemplo primeiro item,
segundo item, etc)
3. Implemente uma função para inserir um item em uma
posição específica da lista (exemplo inserir na segunda
posição)