Questão de Algoritmos e Estrutura de Dados — Estrutura de Dados — FGV 2026
Algoritmos e Estrutura de Dados›Estrutura de Dados
Código
fg127328
Banca
FGV
Órgão
AL-RO
Ano
2026
Nível
Superior
Cargo
Analista Legislativo (Tecnologia da Informação - Análise e Desenvolvimento de Sistemas)
Um Analista precisa escolher a estrutura de dados mais eficiente para implementar uma lista de tarefas críticas que requer inserções e remoções rápidas em qualquer ponto da lista, pois a prioridade das tarefas pode mudar a qualquer momento no sistema.A estrutura de dados que oferece a complexidade temporal mais eficiente 0 (1) para operações de inserção e remoção no meio da estrutura, assumindo que a posição de inserção ou remoção já é conhecida ou localizada por um ponteiro, é o(a)
AArray Estático.
BLista Duplamente Encadeada.
CTabela Hash.
DArray Dinâmico.
EÁrvore Binária de Busca.
Revelar gabarito e comentário▾
GabaritoB — Lista Duplamente Encadeada.
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”.
Complexidade de operações em estruturas de dados
Gabarito: letra B. A Lista Duplamente Encadeada permite inserção e remoção no meio com complexidade O(1) quando já se possui um ponteiro para a posição desejada, pois basta ajustar os ponteiros dos nós adjacentes — não há necessidade de deslocar elementos. Essa é a principal vantagem sobre as demais estruturas listadas.
A questão testa a compreensão das características fundamentais de cada estrutura de dados, especialmente o custo das operações de inserção e remoção em posições arbitrárias. A banca explora a diferença entre estruturas com acesso indexado (arrays) e estruturas encadeadas.
Estrutura de Dados
Inserção/Remoção no Meio (com ponteiro conhecido)
Acesso Indexado
Ordem Sequencial
Array Estático
O(n) — desloca elementos
O(1)
Sim
Lista Duplamente Encadeada
O(1) — ajusta ponteiros
O(n)
Sim
Tabela Hash
Não se aplica (sem índice linear)
O(1) médio
Não
Array Dinâmico
O(n) — desloca elementos
O(1)
Sim
Árvore Binária de Busca
O(log n) — rebalanceamento
O(log n)
Sim (in-order)
Alternativa A — ❌ Incorreta
Arrays estáticos têm tamanho fixo e exigem deslocamento de todos os elementos à direita (ou à esquerda) para inserir/remover no meio, resultando em O(n) no pior caso. O acesso indexado é O(1), mas a operação pedida não é acesso e sim modificação no meio.
Alternativa B — ✅ Correta ⟵ GABARITO
Na lista duplamente encadeada, cada nó possui ponteiros para o anterior e o próximo. Com um ponteiro direto para o nó alvo, inserir um novo nó antes ou depois exige apenas reatribuir ponteiros locais — operação de tempo constante, O(1), independentemente do tamanho da lista.
Alternativa C — ❌ Incorreta
Tabelas hash oferecem inserção, remoção e busca O(1) em média, mas não mantêm uma ordem sequencial acessível para “meio da lista”. A posição não é determinada por um índice linear; a operação de inserir em uma posição específica (como o meio) não é natural e, se forçada, exigiria percorrer a estrutura, o que degrada a complexidade.
Alternativa D — ❌ Incorreta
Arrays dinâmicos (como ArrayList em Java ou list em Python) oferecem acesso O(1) por índice, mas inserir ou remover no meio requer o deslocamento de todos os elementos subsequentes, resultando em O(n). A realocação do array quando a capacidade se esgota também pode custar O(n) amortizado, mas a operação no meio é sempre O(n).
Alternativa E — ❌ Incorreta
Uma árvore binária de busca (ABB) equilibrada, como AVL ou Rubro-Negra, permite inserção e remoção em O(log n), mas não O(1). Além disso, a localização do “meio” não é direta: é necessário percorrer a árvore até o nó desejado. A ABB é otimizada para buscas e ordenação, não para modificações em posições arbitrárias.
PEGA ESSA DICA!
Associe rapidamente: se a operação exige deslocamento físico de elementos → array; se ajusta ponteiros localmente → lista encadeada. Inserir/remover no meio de uma lista com ponteiro conhecido é o exemplo clássico de O(1) em listas duplamente encadeadas.