Pular para o conteúdo principal

Questão de Algoritmos e Estrutura de Dados — Algoritmos — FADURPE 2024

Algoritmos e Estrutura de DadosAlgoritmos
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.
  1. AF={6,1,7} e P={8,5,4}
  2. BF={7,1,6} e P={4,9,8}
  3. CF={4,5,9} e P={5,4,3}
  4. DF={4,9,3} e P={2,1,5}
  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.

    1. Move topo de P (5) para F → F: [3,4,8,5]; P: [2,1]

    2. Descarta frente de F (3) → F: [4,8,5]

    3. Insere V (6) em F → F: [4,8,5,6]

    4. V = 7

  • Estado: F: [4,8,5,6]; P: [2,1]; V=7

Processando 9:

  • 9 > 7? Sim.

    1. Move topo de P (1) para F → F: [4,8,5,6,1]; P: [2]

    2. Descarta frente de F (4) → F: [8,5,6,1]

    3. Insere V (7) em F → F: [8,5,6,1,7]

    4. V = 9

  • Estado: F: [8,5,6,1,7]; P: [2]; V=9

Processando 4:

  • 4 > 9? Não.

    1. Descarta topo de P (2) → P: []

    2. Move frente de F (8) para P → F: [5,6,1,7]; P: [8]

    3. Insere V (9) em P → P: [8,9]

    4. V = 4

  • Estado: F: [5,6,1,7]; P: [8,9]; V=4

Processando 3:

  • 3 > 4? Não.

    1. Descarta topo de P (9) → P: [8]

    2. Move frente de F (5) para P → F: [6,1,7]; P: [8,5]

    3. Insere V (4) em P → P: [8,5,4]

    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

  1. 1Início: F=[3,4,8], P=[2,1,5], V=6
  2. 27 > 6? SimMove topo P→F, descarta frente F, insere V em F, V=7
  3. 39 > 7? SimMove topo P→F, descarta frente F, insere V em F, V=9
  4. 44 > 9? NãoDescarta topo P, move frente F→P, insere V em P, V=4
  5. 53 > 4? NãoDescarta topo P, move frente F→P, insere V em P, V=3
  6. 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.

Gabarito: letra A

Link permanente: /questoes/qg129609