Escolar Documentos
Profissional Documentos
Cultura Documentos
APRESENTAÇÃO
As listas encadeadas simples são normalmente utilizadas para relacionar itens que precisam ser
exibidos ou manipulados por meio de estruturas dinâmicas. Com isso, é possível implementar
operações que permitem redimensionar as listas de acordo com a quantidade de itens
manipulados, ocupando exatamente a memória necessária para alocar os elementos que
pertencem à lista. Conhecer a definição das listas encadeadas simples, bem como suas operações
de manipulação e acesso, permite que o profissional de TI identifique e aplique soluções
confiáveis e otimizadas para o desenvolvimento de sistemas.
Nesta Unidade de Aprendizagem, você vai estudar sobre listas encadeadas simples e suas
operações de manipulação e acesso.
Bons estudos.
DESAFIO
Listas, de modo geral, podem conter pequenas ou grandes relações de elementos. As relações
pequenas, independentemente da técnica utilizada, são manipuladas com baixo custo
computacional por ter poucos itens. No entanto, relações grandes requerem a avaliação de
técnicas apropriadas, como listas dinâmicas, com o objetivo de atender as demandas usando
adequadamente os recursos computacionais disponíveis, por meio de rotinas otimizadas que
proporcionam melhor desempenho.
Nesse contexto, sua tarefa é escrever o algoritmo que faça a inclusão dos novos elementos na
lista encadeada simples na ordem certa, isto é, mantendo a lista classificada. Para isso, considere
a seguinte estrutura da lista:
estrutura Produto (
codigoBarras : texto
descricao : texto
estrutura ListaProduto (
produto : Produto
INFOGRÁFICO
Rotinas automatizadas, de modo geral, utilizam listas para representar dados em série ou para
apresentar itens agrupados por determinada categoria, como a listagem de alunos matriculados
em determinada disciplina ou a relação de clientes com a mensalidade em dia de uma academia
de ginástica. Conhecer as estruturas de dados baseadas em listas representa um diferencial que
todo profissional de TI deve ter, uma vez isso poderá auxiliá-lo na identificação e seleção de
técnicas apropriadas para a solução dos problemas computacionais que fazem parte da rotina de
programadores e desenvolvedores de sistemas.
Na obra Estrutura de dados, leia o capítulo Listas encadeadas simples, que serve como base
teórica desta Unidade de Aprendizagem. No material você vai estudar sobre listas dinâmicas,
bem como as operações de manipulação e acesso a listas.
Boa leitura.
ESTRUTURA
DE DADOS
Mauricio Saraiva
Listas encadeadas simples
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
Introdução
As listas encadeadas simples são normalmente utilizadas para relacionar
itens que precisam ser exibidos ou manipulados por meio de estruturas
dinâmicas. Com isso, é possível implementar operações que permitem
redimensionar as listas de acordo com a quantidade de itens manipulados,
ocupando exatamente a memória necessária para alocar os elementos
que pertencem à lista. Conhecer a definição das listas encadeadas sim-
ples, bem como suas operações de manipulação e acesso, permite que
o profissional de TI (tecnologia da informação) identifique e aplique
soluções confiáveis e otimizadas para o desenvolvimento de sistemas.
Neste capítulo, você vai estudar sobre listas encadeadas simples e
suas operações de manipulação e acesso.
a b
c d
e f
&e1
e1
&prox
Figura 2. Estrutura de um elemento de uma lista encadeada.
e1 e2 e3 e4
“Não liberar memória alocada dinamicamente quando ela não mais for necessária
pode fazer com que o sistema esgote prematuramente sua memória. Algumas vezes
isso é chamado um vazamento de memória” (DEITEL; DEITEL, 2010, p. 552).
listaProduto.proximo = nulo
Incluir um novo elemento no início da lista é uma tarefa simples. Para isso, é
preciso ajustar o apontamento inicial da lista, que vai indicá-lo como primeiro
elemento, definindo como seu próximo elemento aquele que ocupava essa
posição anteriormente (Figura 4).
d
c
a e
b
d
a c
b e
novoProduto.proximo = listaProduto.proximo
listaProduto.proximo = novoProduto
8 Listas encadeadas simples
d
c
a b e
x
d
a c
b e
d
a c
b e
d
a c
b e
d
a c
b e
d
a
b e
primeiro= listaProduto.proximo
listaProduto.proximo= primeiro.proximo
liberarMemoria(primeiro)
Para excluir um elemento do final, é preciso fazer uma varredura na lista até
chegar à última posição, definir o apontamento do penúltimo elemento como
nulo e liberar a memória do elemento que ocupava a última posição.
anterior= listaProduto
atual= listaProduto.proximo
enquanto atual.proximo diferente nulo
anterior= atual
atual= atual.proximo
Listas encadeadas simples 11
fim enquanto
anterior.proximo= nulo
liberarMemoria(atual)
anterior= listaProduto
atual= lisProduto.proximo
enquanto atual.proximo diferente nulo
se atual.proximo igual a valor
anterior.proximo= atual.proximo
liberarMemoria(atual)
sair
fim se
anterior= atual
atual= atual.proximo
fim enquanto
Para excluir uma lista encadeada inteira, é preciso percorrer todos os elementos,
a partir do início, e liberar a alocação de memória de cada elemento, bem como
indicar que seu próximo elemento aponta para nulo para evitar o apontamento
de alguma posição desatualizada na memória.
atual= listaProduto
enquanto atual.proximo diferente nulo
proximo= atual.proximo
atual.proximo= nulo
liberarMemoria(atual)
fim enquanto
12 Listas encadeadas simples
Uma lista encadeada está vazia se ela aponta para nulo, isto é, se ela não
aponta para nenhum elemento.
primeiro= listaProduto.proximo
imprime primeiro
Não é possível acessar diretamente o último elemento da lista, uma vez que
uma lista encadeada simples não permite acesso direto aos elementos. Dessa
forma, é preciso percorrer toda a lista a partir do primeiro elemento.
Listas encadeadas simples 13
elemento= listaProduto.proximo
enquanto elemento diferente nulo
se elemento.proximo igual a nulo
imprime elemento
fim se
elemento= listaProduto.proximo
fim enquanto
Sabendo que uma lista encadeada simples não permite acessar diretamente
os elementos, é preciso realizar uma varredura na lista a partir da primeira
posição. Dessa forma, compara-se cada elemento da lista com o dado pesqui-
sado, buscando localizar a informação desejada.
elemento= listaProduto.proximo
enquanto elemento diferente nulo
se elemento.proximo igual a informação desejada
imprime elemento
fim se
elemento= listaProduto.proximo
fim enquanto
elemento= listaProduto.proximo
enquanto elemento diferente nulo
imprime elemento
elemento= listaProduto.proximo
fim enquanto
14 Listas encadeadas simples
CELES, W.; CERQUEIRA, R.; RANGEL, J. L. Introdução a estrutura de dados. São Paulo:
Campus, 2004.
DEITEL, P. J.; DEITEL, H. M. Como programar em C. 6. ed. São Paulo: Pearson, 2011.
EDELWEISS, N.; GALANTE, R. Estrutura de dados. Porto Alegre: Bookman, 2009. (Série
Livros Didáticos Informática UFRGS, v. 18).
FORBELLONE, A. L. Lógica de programação: a construção de algoritmos e estruturas
de dados. 3. ed. São Paulo: Prentice Hall, 2005.
MATTOS, P.; LORENZI, F.; CARVALHO, T. Estruturas de dados. São Paulo: Thomson, 2007.
Encerra aqui o trecho do livro disponibilizado para
esta Unidade de Aprendizagem. Na Biblioteca Virtual
da Instituição, você encontra a obra na íntegra.
Conteúdo:
DICA DO PROFESSOR
Assista a Dica do Professor para conhecer os principais recursos de listas encadeadas simples.
EXERCÍCIOS
C) Baixo custo computacional para realizar pesquisa por meio dos índices.
D) São rápidas para inserir porque a inserção sempre ocorre no final da lista.
E) Utilizam arrays para armazenar o endereço de memória dos demais itens da cadeia.
item= alocarMemoria(lista)
nodo= lista.proximo
nodo.proximo= item;
Listas encadeadas simples, de modo geral, são muito utilizadas nos sistemas computacionais,
como, por exemplo, para armazenar uma relação de produtos em estoque de determinada loja.
Contudo, devido às operações de inclusão e exclusão que podem ocorrer em qualquer posição
de uma lista, normalmente os dados não estão classificados em determinada ordem.
Nesse sentido, pode ser necessário apresentar os dados de uma lista encadeada simples
ordenados por determinado atributo da estrutura, como um relatório que mostra os produtos
mais vendidos no mês em ordem decrescente de venda, por exemplo.
Assim, para demonstrar como ordenar uma lista encadeada simples, veja um algoritmo que
utiliza um método qualquer de classificação de dados. O objetivo não é explicar o
funcionamento do método de ordenação, mas demonstrar como a ordenação atua sobre uma lista
dinâmica.
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do
professor:
Entenda a diferença entre lista encadeada e lista estática (vetor) e saiba quando usar cada uma.