Questão de Algoritmos e Estrutura de Dados — Estrutura de Dados — CONSULPAM 2026
Algoritmos e Estrutura de Dados›Estrutura de Dados
Código
qg660559
Banca
CONSULPAM
Órgão
GHC-RS
Ano
2026
Nível
Médio
Cargo
Programador
Em uma lista simplesmente encadeada não ordenada, um programador recebe referência direta para um nó “p” e precisa remover o elemento imediatamente posterior a esse nó, preservando a consistência dos encadeamentos. O nó “p” não é o último da estrutura de dados manipulada. Diante do exposto, para realizar a operação desejada o programador deve:
ACopiar o conteúdo de “p.prox” para “p” e liberar o nó “p”, mantendo o restante da lista inalterado.
BAtribuir “p = p.prox.prox”, pois a atualização da variável local elimina o nó intermediário da lista.
CAtualizar o campo de encadeamento de “p” para referenciar o sucessor do nó atualmente apontado por “p.prox”.
DInverter temporariamente os ponteiros da lista até alcançar o final e, só então, desfazer a inversão sem o nó removido.
EReiniciar a travessia a partir da cabeça da lista para localizar o predecessor do nó “p” e, em seguida, removê-lo da estrutura.
Revelar gabarito e comentário▾
GabaritoC — Atualizar o campo de encadeamento de “p” para referenciar o sucessor do nó atualmente apontado por “p.prox”.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Remoção em lista simplesmente encadeada
Gabarito: letra C. Para remover o nó imediatamente posterior a um nó p em uma lista simplesmente encadeada, basta fazer o campo prox de p apontar para o sucessor do nó a ser removido, ou seja, p.prox = p.prox.prox. Essa operação preserva os encadeamentos e é a descrita na alternativa C.
A questão testa o conhecimento da manipulação de ponteiros em estruturas ligadas. O programador já possui a referência direta ao nó p, que é o predecessor do nó a ser removido. Não é necessário percorrer a lista novamente.
1p.prox = p.prox.prox
2Liberar nó removido (free)
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Copiar o conteúdo de p.prox para p e liberar p removeria o próprio nó p, não o posterior. Além disso, o nó p perderia seu conteúdo original, comprometendo a lista.
Alternativa B — ❌ Incorreta
Atribuir p = p.prox.prox apenas altera a variável local p, sem modificar os encadeamentos da lista. O nó intermediário continua existindo e ainda é referenciado pelo campo prox do nó original.
Alternativa C — ✅ Correta ⟵ GABARITO
A operação correta: atualizar o campo de encadeamento de p para referenciar o sucessor do nó apontado por p.prox, ou seja, p.prox = p.prox.prox. Isso remove o nó posterior, e o nó removido pode então ser liberado (free) para evitar vazamento de memória.
Alternativa D — ❌ Incorreta
Inverter temporariamente os ponteiros até o final da lista é desnecessário e ineficiente. A remoção do nó posterior a p é uma operação de custo O(1) que não exige travessia.
Alternativa E — ❌ Incorreta
Reiniciar a travessia a partir da cabeça para localizar o predecessor de p é redundante, pois p já é o predecessor do nó a ser removido. Isso adicionaria complexidade desnecessária.
NÃO CAIA NESSA!
Em listas simplesmente encadeadas, para remover o nó seguinte a um nó conhecido p, basta redirecionar p.prox para p.prox.prox. É uma operação O(1). Não confunda com remoção do próprio nó p (que exigiria acesso ao predecessor de p). Memorize o padrão: p.prox = p.prox.prox.