Alternativa D - fim = (fim + 1) % MAX;
Introdução à Fila Circular
Uma fila circular é uma estrutura de dados onde o último elemento está conectado ao primeiro, formando um ciclo. Em implementações baseadas em arrays, isso permite reutilizar espaços vazios que foram liberados por remoções de elementos.
Para que a fila funcione corretamente sem estourar os limites do array, precisamos de uma lógica que faça o ponteiro de controle ("fim") retornar automaticamente ao índice 0 quando chegar ao final do vetor.
Análise da Expressão Matemática
A expressão correta deve garantir dois comportamentos principais:
- Avançar o índice em 1 posição para a próxima inserção.
- "Voltar" para o início (índice 0) caso o avanço ultrapasse o tamanho máximo (
MAX).
A operação matemática ideal para esse comportamento cíclico é o operador módulo (%).
Vamos analisar a fórmula da alternativa D:
\text{novo\_fim} = (\text{atual\_fim} + 1) \% \text{MAX}
Esta fórmula funciona da seguinte maneira:
- Se
fim estiver no meio do array (ex: fim = 5 e MAX = 10): - (5 + 1) \% 10 = 6 (avança normalmente).
- Se
fim estiver no último índice válido (ex: fim = 9 e MAX = 10): - (9 + 1) \% 10 = 10 \% 10 = 0 (reinicia no início).
Comparativo com as Outras Alternativas
| Alternativa | Análise |
|---|
| A | fim = fim + 1; → Falha ao atingir o limite do array (Fila Linear). |
| B | if (...) ... else ... → Funciona logicamente, mas é menos eficiente que o módulo devido à verificação condicional. |
| C | fim = fim - 1; → Retrocede o índice, impossível para inserção. |
| D | Correta. Usa módulo para garantir o loop automático. |
| E | fim = (fim % MAX) + 1; → Pode resultar em um índice igual a MAX (inválido). |
A alternativa D é considerada a mais eficiente pois substitui uma estrutura condicional complexa (if/else) por uma única operação aritmética.
Alternativa D.