Um desenvolvedor está implementando uma estrutura de dados do tipo fila em Java. Ele iniciou a implementação da classe Fila utilizando um array para armazenar os elementos: No método enfileirar, qual é a finalidade da expressão (fim + 1) % elementos.length?
- A)Inicializar o índice fim com o valor correto na primeira inserção.
Errada, porque a expressão não inicializa o índice fim na primeira inserção; ela calcula a próxima posição de forma contínua.
- B)Verificar se a fila está cheia antes de adicionar um novo elemento.
Errada, porque verificar se a fila está cheia exige outra lógica, normalmente comparando posições e capacidade, e não essa expressão isolada.
- C)Aumentar a capacidade do array dinamicamente quando necessário.
Errada, porque a expressão não aumenta a capacidade do array; ela apenas controla o índice dentro do tamanho já existente.
- D)Garantir que o índice fim não ultrapasse o tamanho do array, permitindo que a fila seja circular.
Certa, porque o módulo faz o índice fim voltar ao início do vetor quando atinge o limite, permitindo uma fila circular.
Gabarito: D
Quando uma fila é implementada com array, um cuidado importante é não deixar os índices saírem do limite do vetor. Em vez de simplesmente fazer fim = fim + 1, usa-se uma conta modular para “dar a volta” no array quando chega ao final. É aí que entra a expressão (fim + 1) % elementos.length. Essa expressão calcula a próxima posição disponível e, se o índice passar do último espaço do array, ele volta para 0. Na prática, isso transforma a estrutura em uma fila circular, o que evita desperdício de espaço e melhora o reaproveitamento do vetor. Sem esse ajuste, depois de algumas operações a implementação quebra ou deixa áreas inutilizadas. Por isso o gabarito é a letra D. A função da expressão não é aumentar o array, nem testar se ele está cheio, mas controlar o deslocamento do índice fim de forma cíclica. Em termos de estrutura de dados, isso é a ideia clássica de fila circular, muito comum em implementações com array fixo. Se você lembrar da conta modular, matou a questão: % serve justamente para limitar o valor dentro do tamanho do vetor. É o famoso “chegou no fim? volta pro começo”, sem drama.