Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FADE - UFPE 2023

ProgramaçãoLinguagens de programação
Código
qq866884
Banca
FADE - UFPE
Órgão
UFPE
Ano
2023
Nível
Superior
Cargo
FADE - - Analista de Tecnologia da Informação - Área: Sistemas
Suponha que, em Java, utilizamos a classe LinkedList para implementar uma estrutura de dados dinâmica. Vamos considerar duas possibilidades para inserção e remoção: i. usar apenas os métodos addFirst() e removeFirst(); ou ii. usar apenas os métodos addLast() e removeLast(). Podemos, então, afirmar que,
  1. Ano primeiro caso, trata-se de uma pilha e, no segundo, de uma fila.
  2. Bno primeiro caso, trata-se de uma fila e, no segundo, de uma pilha.
  3. Cno primeiro caso, trata-se de uma lista encadeada e, no segundo, de uma fila.
  4. Dem ambos os casos, trata-se de uma fila.
  5. Eem ambos os casos, trata-se de uma pilha.
Revelar gabarito e comentário

GabaritoE — em ambos os casos, trata-se de uma pilha.

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”.

Estruturas de dados: Pilha vs Fila em Java

A questão testa o comportamento de uma LinkedList quando usamos apenas operações em uma das extremidades. Em Java, a classe LinkedList implementa as interfaces List e Deque, oferecendo métodos para manipular tanto o início quanto o final da lista.

  • Pilha (stack): segue o princípio LIFO (Last In, First Out). As operações de inserção e remoção ocorrem na mesma extremidade.

  • Fila (queue): segue o princípio FIFO (First In, First Out). A inserção ocorre em uma extremidade e a remoção na outra.

Análise dos casos:

Caso i: usar apenas addFirst() e removeFirst() — ambos operam no início da lista. O último elemento inserido (pelo início) será o primeiro a ser removido (também pelo início). Isso é LIFO → pilha.

Caso ii: usar apenas addLast() e removeLast() — ambos operam no final da lista. Novamente, o último inserido (no final) é o primeiro removido (do final). Isso também é LIFO → pilha.

Portanto, em ambos os casos, a estrutura se comporta como uma pilha.

Alternativas:

Caso

Métodos usados

Extremidade de inserção

Extremidade de remoção

Comportamento

i

addFirst() + removeFirst()

Início

Início

Pilha (LIFO)

ii

addLast() + removeLast()

Final

Final

Pilha (LIFO)

Alternativa A — ❌ Incorreta

Afirma que o primeiro caso é pilha e o segundo é fila. O segundo caso, com addLast() e removeLast(), também é pilha (LIFO), não fila.

Alternativa B — ❌ Incorreta

Inverte: diz que o primeiro é fila e o segundo é pilha. O primeiro caso (addFirst + removeFirst) é pilha, não fila.

Alternativa C — ❌ Incorreta

Diz que o primeiro é lista encadeada e o segundo é fila. Ambos são pilhas; além disso, LinkedList já é uma lista encadeada, mas o comportamento é definido pelos métodos usados.

Alternativa D — ❌ Incorreta

Afirma que ambos são fila. Na verdade, ambos são pilha, pois inserção e remoção ocorrem na mesma extremidade.

Alternativa E — ✅ Correta

Reconhece que, em ambos os casos, a estrutura opera como uma pilha (LIFO).

PEGA ESSA DICA!

Para identificar se é pilha ou fila, pergunte: "a inserção e a remoção ocorrem na mesma extremidade?" Se sim → pilha. Se ocorrem em extremidades opostas → fila. Em Java, addFirst/removeFirst e addLast/removeLast são operações na mesma extremidade (início ou fim), portanto pilha. Já addLast/removeFirst (ou addFirst/removeLast) caracterizariam uma fila.

Gabarito: letra E

Link permanente: /questoes/qq866884