← Questões de Algoritmos e Estrutura de Dados

Algoritmos e Estrutura de Dados · CONSULPLAN · 2025

Questão comentada de Algoritmos e Estrutura de Dados

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?

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.

Continue treinando

Questões relacionadas