Questão de Algoritmos e Estrutura de Dados — Algoritmos — FADURPE 2024
Algoritmos e Estrutura de Dados›Algoritmos
Código
qg129609
Banca
FADURPE
Órgão
UFRPE
Ano
2024
Nível
Superior
Cargo
Analista de Tecnologia da Informação/Área Sistemas
Considere a implementação de um programa que utiliza estruturas de uma fila de inteiros (F) e de uma pilha de inteiros (P), além de uma varável inteira (V). Trata-se do processamento de uma sequência de inteiros, que segue duas regras: se o atual elemento da sequência é maior que V, então movemos um elemento de P para F, descartamos um elemento de F, inserimos o valor de V também em F e atribuímos a V o atual elemento da sequência. Caso contrário, descartamos um elemento de P, movemos um elemento de F para P, inserimos o valor de V em P e atribuímos a V o atual elemento da sequência. Considerando que, no início, temos F={3,4,8}, P={2,1,5}, sendo que, para ambas, a ordem dessas listas é do mais antigo para o mais novo, e V=6, assinale a alternativa que apresenta o estado final de F e P após o programa receber a sequência de inteiros 7,9,4,3.
AF={6,1,7} e P={8,5,4}
BF={7,1,6} e P={4,9,8}
CF={4,5,9} e P={5,4,3}
DF={4,9,3} e P={2,1,5}
EF={5,4,1} e P={3,5,2}
Revelar gabarito e comentário▾
GabaritoA — F={6,1,7} e P={8,5,4}
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”.
Simulação de fila e pilha
Gabarito: letra A. Após processar a sequência [7,9,4,3] com as regras dadas, o estado final é F={6,1,7} e P={8,5,4}, exatamente como na alternativa A. A simulação passo a passo confirma que cada operação altera as estruturas conforme as condições comparando o valor atual V com o elemento da sequência.
A questão testa a compreensão de operações em fila (FIFO) e pilha (LIFO) e a capacidade de simular um algoritmo. A principal armadilha é a ordem dos elementos: em F, a ordem listada é do mais antigo (frente) para o mais novo (final); em P, a ordem é da base (mais antigo) para o topo (mais novo). É essencial respeitar essa ordem ao mover e descartar elementos.
Simulação detalhada
Estado inicial:
F: [3,4,8] (frente=3, final=8)
P: [2,1,5] (base=2, topo=5)
V = 6
Processando 7 (primeiro elemento):
7 > 6? Sim.
Move topo de P (5) para F → F: [3,4,8,5]; P: [2,1]
Descarta frente de F (3) → F: [4,8,5]
Insere V (6) em F → F: [4,8,5,6]
V = 7
Estado: F: [4,8,5,6]; P: [2,1]; V=7
Processando 9:
9 > 7? Sim.
Move topo de P (1) para F → F: [4,8,5,6,1]; P: [2]
Descarta frente de F (4) → F: [8,5,6,1]
Insere V (7) em F → F: [8,5,6,1,7]
V = 9
Estado: F: [8,5,6,1,7]; P: [2]; V=9
Processando 4:
4 > 9? Não.
Descarta topo de P (2) → P: []
Move frente de F (8) para P → F: [5,6,1,7]; P: [8]
Insere V (9) em P → P: [8,9]
V = 4
Estado: F: [5,6,1,7]; P: [8,9]; V=4
Processando 3:
3 > 4? Não.
Descarta topo de P (9) → P: [8]
Move frente de F (5) para P → F: [6,1,7]; P: [8,5]
Insere V (4) em P → P: [8,5,4]
V = 3
Estado final:
F: [6,1,7]
P: [8,5,4]
NÃO CAIA NESSA!
A ordem das estruturas (mais antigo → mais novo) é crucial. Em fila, o primeiro elemento listado é o front (removido primeiro). Em pilha, o primeiro listado é a base (último a ser removido). Inverter essa ordem leva a outro resultado. A banca testa se você entende que a remoção da pilha é sempre pelo topo (último elemento listado) e da fila pelo front (primeiro elemento listado).
Análise das alternativas
Etapa
Condição
Operações
F (frente→final)
P (base→topo)
V
Inicial
—
—
[3,4,8]
[2,1,5]
6
7
7 > 6 (sim)
move topo P→F; descarta frente F; insere V em F; V=7
[4,8,5,6]
[2,1]
7
9
9 > 7 (sim)
move topo P→F; descarta frente F; insere V em F; V=9
[8,5,6,1,7]
[2]
9
4
4 > 9 (não)
descarta topo P; move frente F→P; insere V em P; V=4
[5,6,1,7]
[8,9]
4
3
3 > 4 (não)
descarta topo P; move frente F→P; insere V em P; V=3
[6,1,7]
[8,5,4]
3
1Início: F=[3,4,8], P=[2,1,5], V=6
27 > 6? SimMove topo P→F, descarta frente F, insere V em F, V=7
39 > 7? SimMove topo P→F, descarta frente F, insere V em F, V=9
44 > 9? NãoDescarta topo P, move frente F→P, insere V em P, V=4
53 > 4? NãoDescarta topo P, move frente F→P, insere V em P, V=3
6Final: F=[6,1,7], P=[8,5,4]
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
F={6,1,7} e P={8,5,4}. Simulação confirmou esses valores.
Alternativa B — ❌ Incorreta
F={7,1,6} e P={4,9,8}. O valor 7 aparece como front em F, mas na simulação o último front é 6; em P, a ordem está invertida e com valores trocados.
Alternativa C — ❌ Incorreta
F={4,5,9} e P={5,4,3}. Não corresponde a qualquer etapa; valores incoerentes.
Alternativa D — ❌ Incorreta
F={4,9,3} e P={2,1,5}. P é o estado inicial (2,1,5), mas F deveria ter sido alterado.
Alternativa E — ❌ Incorreta
F={5,4,1} e P={3,5,2}. Não corresponde ao resultado da simulação.