Módulo 4 - Listas ligadas: a corrente de nós
Listas duplas e circulares: variações da corrente
8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 12/07/2026
O que você vai aprender
- Entender a lista duplamente ligada (ligação para o anterior e o próximo).
- Entender a lista circular (o último aponta para o primeiro).
- Reconhecer usos reais de cada variação.
- Perceber o custo extra de cada ligação adicional.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Listas duplas e circulares: variações da corrente.
Os objetivos desta aula. Entender a lista duplamente ligada (ligação para o anterior e o próximo). Entender a lista circular (o último aponta para o primeiro). Reconhecer usos reais de cada variação. Perceber o custo extra de cada ligação adicional.
Veja o essencial, parte por parte.
Andar nos dois sentidos. Na lista simples, cada nó só aponta para o próximo, e ela termina no nada.
A corrente que não termina. A lista circular ataca outra limitação: o fim.
Cada variação no seu lugar. Na duplamente ligada, toda inserção e remoção mexe em duas ligações por vizinho; esquecer uma corrompe a corrente.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
Andar nos dois sentidos
A lista ligada simples tem uma limitação incômoda: ela é uma via de mão única. Cada nó só sabe quem vem depois, nunca quem vem antes. Se você está no meio da corrente e precisa voltar um nó, azar: tem que recomeçar da cabeça. A lista duplamente ligada resolve isso dando a cada nó duas ligações, uma apontando para o próximo e outra para o anterior. Agora a corrente é uma via de mão dupla: de qualquer nó você anda para frente ou para trás. Isso torna barato remover um nó tendo apenas ele em mãos, porque a ligação para o anterior está ali, sem precisar procurar quem apontava para você.
A corrente que não termina
A lista circular ataca outra limitação: o fim. Numa lista comum, o último nó aponta para o nada, e chega. Na circular, o último nó aponta de volta para o primeiro, e a corrente vira um anel sem começo nem fim claros. Isso serve quando o dado é naturalmente cíclico. Pense num carrossel de jogadores que reveza a vez: depois do último, volta ao primeiro, para sempre. Ou numa playlist em modo repetir, que ao acabar recomeça. O detalhe delicado é percorrer uma lista circular: como não há o nada para servir de parada, um laço ingênuo roda para sempre. Você precisa de outra condição, por exemplo parar quando voltar ao nó de onde começou.
// percorrer uma lista circular sem laco infinito
inicio <- cabeca
atual <- cabeca
repita
escreva(atual.valor)
atual <- atual.proximo
ate atual == inicio // parou ao voltar ao ponto de partida
// sem essa condicao, o anel giraria para sempreNa circular não há o nada para parar. A condição de parada é voltar ao nó inicial.
🎮 Jogo da aula
Uma volta no anel
Esta lista circular tem três nós. O programa dá uma volta completa. Escolha a saída que ele imprime.
// lista circular: A -> B -> C -> (volta para A)
inicio <- A
atual <- A
repita
escreva(atual.valor)
atual <- atual.proximo
ate atual == inicioCada variação no seu lugar
Nenhuma variação é gratuita, e por isso a simples ainda é o ponto de partida. Cada ligação a mais é memória a mais em todo nó e mais uma coisa para manter certa: numa lista duplamente ligada, ao inserir ou remover, você precisa ajustar as duas ligações dos vizinhos, não só uma, e esquecer metade gera bug. A circular pede sempre atenção à condição de parada. A regra prática é usar a variação mais simples que resolve o problema. Se você nunca anda para trás, a lista simples basta. Se precisa de navegação nos dois sentidos, como o histórico de avançar e voltar, a dupla compensa. Se o dado gira em ciclo, a circular é natural. A estrutura acompanha a forma do problema, nunca o contrário.
Teste rápido
O que uma lista duplamente ligada tem que a lista ligada simples não tem?
Perguntas frequentes
- Qual a vantagem principal da lista duplamente ligada?
- Poder andar nos dois sentidos. Com a ligação para o anterior em cada nó, você percorre a corrente para frente ou para trás e remove um nó tendo só ele em mãos, sem procurar quem apontava para ele. É o que sustenta recursos como avançar e voltar em navegação.
- Por que percorrer uma lista circular pode travar o programa?
- Porque ela não tem o nó final que aponta para o nada. Um laço que esperava esse fim nunca o encontra e gira para sempre. A solução é usar outra condição de parada, como interromper quando voltar ao nó em que começou.
- Onde a lista circular é usada de verdade?
- Em qualquer situação cíclica: rodízio de jogadores ou processos que revezam a vez, playlists em modo repetir, buffers que reaproveitam o espaço em círculo. Sempre que, ao chegar ao fim, faz sentido recomeçar do começo, a estrutura circular modela isso com naturalidade.
- A dupla ligação deixa a lista mais pesada?
- Um pouco. Cada nó guarda uma referência a mais (a do anterior), o que consome mais memória e adiciona uma ligação para manter certa em cada inserção e remoção. Você troca esse custo pela capacidade de navegar nos dois sentidos, e só compensa quando essa navegação é necessária.
- Existe lista duplamente ligada e circular ao mesmo tempo?
- Existe: a duplamente ligada circular. Cada nó aponta para o anterior e o próximo, e as pontas se fecham (o último liga ao primeiro e o primeiro ao último). É a mais poderosa e a mais trabalhosa de manter, usada quando se precisa girar em anel e andar nos dois sentidos.
- Por qual variação devo começar num problema novo?
- Pela mais simples que resolve. Comece supondo a lista simples; só suba para a dupla se precisar andar para trás, e para a circular se o dado for cíclico. Adicionar ligação sem necessidade é complexidade e risco de bug sem ganho, contra a regra de usar o mínimo que atende.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.