Questão de Programação — Linguagens de programação — FADE - UFPE 2023
Programação›Linguagens 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,
Ano primeiro caso, trata-se de uma pilha e, no segundo, de uma fila.
Bno primeiro caso, trata-se de uma fila e, no segundo, de uma pilha.
Cno primeiro caso, trata-se de uma lista encadeada e, no segundo, de uma fila.
Dem ambos os casos, trata-se de uma fila.
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.