Questão nº 57

Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2021 (nº 57)

CESGRANRIO2021Técnico Científico - Área de Formação: Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Bver comentário ↓

A classe Queue a seguir é uma implementação parcial do tipo abstrato de dados Fila.

```java
import java.util.ArrayList;

public class Queue<ELM> {
private ArrayList<ELM> lst=new ArrayList<ELM>();
public boolean isEmpty() {
return lst.isEmpty();
}

public void enqueue(ELM s) {
}

public ELM dequeue() {
}
}
```

Nesse contexto, qual implementação dos métodos enqueue() e dequeue() completa a classe Queue, de modo que todos os elementos inseridos em uma fila possam ser recuperados de acordo com a propriedade FIFO?

Resposta comentada

Gabarito Alternativa B

Fila é uma estrutura onde o primeiro que entra é o primeiro que sai (FIFO, do inglês First In, First Out). Para isso, o enqueue insere no final e o dequeue remove do início.

  • (A) Incorreta: O enqueue insere no final (correto), mas o dequeue apenas o primeiro elemento (get(0)) sem removê-lo, então o mesmo elemento seria retornado sempre, violando o FIFO.
  • (B) Correta: O enqueue insere no índice 0 (início da lista), empurrando os antigos para o final. O dequeue remove o último elemento (lst.size()-1), que é exatamente o mais antigo da fila. Isso garante FIFO: o primeiro a entrar (último da lista) é o primeiro a sair.
  • (C) Incorreta: O enqueue insere no início (0), mas o dequeue remove também do início (remove(0)). Isso removeria o elemento mais recente, invertendo a ordem (LIFO, como uma pilha), não uma fila.
  • (D) Incorreta: O enqueue insere no final (correto), mas o dequeue remove do final (remove(lst.size()-1)), retirando o elemento mais recente, o que também inverte a ordem (LIFO).
  • (E) Incorreta: O enqueue com lst.add(lst.size(), s) é equivalente a lst.add(s) (insere no final), mas o dequeue remove do final, causando o mesmo erro da alternativa D (LIFO, não FIFO).

Armadilha da banca na alternativa A: ela parece correta porque o enqueue está certo e o dequeue usa get(0) (primeiro elemento), mas esquece do remove. O aluno que não percebe que o elemento não é retirado da lista cai na pegadinha, pois o método retorna sempre o mesmo item, nunca esvaziando a fila de fato.

Fonte: CESGRANRIO BASA 01/2021 Técnico Científico - Área de Formação: Tecnologia da Informação. Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho