O documento discute listas simplesmente encadeadas, incluindo sua representação por ponteiros, operações fundamentais como inserção e remoção, e implementação de listas dinâmicas encadeadas em C.
7. ListaDinâmica Encadeada
01:59
Aula 09 – Listas Simplesmente Encadeadas
Listas encadeadas ou listas ligadas representam uma seqüência de objetos na
memória do computador
Exemplo: Listade afazeres
1. Comprar uma lâmpada
2. Trocar uma lâmpada queimada
3. Procurar uma conta no quarto
4. Pagar uma conta na internet
5. Desligar o computador
6. Dormir
11. Listas Encadeadas: Representação por ponteiros
01:59
Aula 09 – Listas Simplesmente Encadeadas
Representação gráfica de um elemento da lista:
12. Listas Encadeadas: Representação por ponteiros
01:59
Aula 09 – Listas Simplesmente Encadeadas
Cada item em particular de uma lista pode ser chamado de elemento, nó, célula, ou
item.
O apontador para o início da lista também é tratado como se fosse uma célula
(cabeça), para simplificar as operações sobre a lista.
O símbolo / representa o ponteiro nulo (NULL), indicando o fim da lista.
13. Inserção no Início
01:59
Aula 09 – Listas Simplesmente Encadeadas
O endereço armazenado no ponteiro p deve ser alterado para o endereço do item a
ser acrescido à lista.
14. Inserção no Final
01:59
Aula 09 – Listas Simplesmente Encadeadas
O endereço armazenado em p será alterado caso a lista esteja vazia ou
O campo prox do último item será alterado.
15. Endereços e Listas
01:59
Aula 09 – Listas Simplesmente Encadeadas
O endereço de uma lista encadeada é o endereço de sua primeira célula.
Se pé o endereço de uma lista, podemos dizer, “p é uma lista”.
16. ListaDinâmica Encadeada
01:59
Aula 09 – Listas Simplesmente Encadeadas
Cada elemento é tratado como um ponteiro que é alocado
dinamicamente, a medida que os dados são inseridos.
Para guardar o primeiro elemento, utilizamos um ponteiro para
ponteiro
Um ponteiro para ponteiro pode guardar o endereço de um ponteiro.
Assim, fica fácil mudar quem está no início da lista mudando o
conteúdo do ponteiro paraponteiro.
17. ListaSimplesmenteEncadeada
01:59
Aula 09 – Listas Simplesmente Encadeadas
O número de elementos na lista dependerá da memória disponível
Numa lista encadeada, para cada novo elemento inserido na estrutura, alocamos
um espaço de memória para armazená-lo. Desta forma, o espaço total de memória
gasto pela estrutura é proporcional ao número de elementos nela armazenado.
No entanto, não podemos garantir que os elementos armazenados na lista ocuparão
um espaço de memória contíguo, portanto não temos acesso direto aos elementos
da lista.
Para que seja possível percorrer todos os elementos da lista, devemos explicitamente
guardar o encadeamento dos elementos, o que é feito armazenando-se, junto com a
informação de cada elemento, um ponteiro para o próximo elemento da lista.
18. ListaSimplesmenteEncadeada
01:59
Aula 09 – Listas Simplesmente Encadeadas
O número de elementos na lista dependerá da memória disponível
Numa lista encadeada, para cada novo elemento inserido na estrutura,
alocamos um espaço de memória para armazená-lo. Desta forma, o
espaço total de memória gasto pela estrutura é proporcional ao número
de elementos nela armazenado.
19. ListaSimplesmenteEncadeada
01:59
Aula 09 – Listas Simplesmente Encadeadas
Do primeiro elemento, podemos alcançar o segundo seguindo o
encadeamento, e assim por diante.
O último elemento da lista aponta para NULL, sinalizando que não
existe um próximo elemento.
20. Inserção de um novo elemento no início da lista
01:59
Aula 09 – Listas Simplesmente Encadeadas
21. Remoção do primeiro elementoda lista
01:59
Aula 09 – Listas Simplesmente Encadeadas
22. Remoção de um elemento no meio da lista
01:59
Aula 09 – Listas Simplesmente Encadeadas
23. Inserção de um elementono meio da lista
01:59
Aula 09 – Listas Simplesmente Encadeadas
25. ListaDinâmica Encadeada
01:59
Aula 09 – Listas Simplesmente Encadeadas
Vantagens
Melhor utilização dos recursos de memória
Não precisa movimentar os elementos nas
operações de inserção e remoção
27. ListaDinâmica Encadeada
01:59
Aula 09 – Listas Simplesmente Encadeadas
Desvantagens
Acesso indireto aos elementos
Necessidade de percorrer a lista para acessar
um elemento
29. ListaDinâmica Encadeada
01:59
Quando utilizar?
Não há necessidade de garantir um espaço mínimo
para a execução do aplicativo
Inserção/remoção em lista ordenada são as operações
mais frequentes
Aula 09 – Listas Simplesmente Encadeadas
34. Prática
01:59 34
As aulas práticas foram baseadas no material de
Linguagem C Descomplicada , Dr. André R. Backes.
Disponível em: https://programacaodescomplicada.wordpress.com/
Aula 09 – Listas Simplesmente Encadeadas
uma tarefa dependia da execução da tarefa anterior
estruturas de dados
que contém ponteiros para si próprias.
Na representação por vetores, exigia um deslocamentos dos itens, tanto na remoção quanto na inserção de itens
Permite utilizar posições não contíguas de memória.
É possível inserir e retirar elementos sem necessidade de
deslocar os itens seguintes da lista.
Celula c;
Celula *p;
P = &c;
Desenhar a lista encadeda na memoria espalhada
Desenhar a lista encadeda na memoria espalhada
devemos localizar o elemento da lista que irá preceder o
elemento novo a ser inserido.
O novo apontará para o próximo elemento na lista e
o elemento precedente apontará para o novo.
Definir...
Definir...
Li = **
Li = **
Não faz muito sentido perguntar se uma lista esta cvheia ou não, tratando-se de estruturas dinâmicas
Só estará cheia quando acabar a memória do computador!
Não é tão necessário realizar essa verificação
Inicio, meio, final
Quando chegar num item em que o aux->prox == NULL, então cheguei no final da lista
A -> A -> A -> .....
Continuando o else//procura onde inserir
If( atual == *li )O elemento atual, é o início da lista?
Continuando o else//procura onde inserir
procura onde inserir
Não se pode remover de uma lista vazia [x]
Removendo o ultimo nó, a lista fica vazia [12] -> [x]