Ed
há 6 dias
Para atualizar o índice "fim" em uma implementação de fila circular utilizando um array de tamanho MAX, precisamos garantir que, ao chegar ao final do array, o índice volte ao início, permitindo o reaproveitamento do espaço. Vamos analisar as alternativas: a) `fim = fim + 1;` - Esta expressão não considera o limite do array e pode causar um estouro (overflow). b) `if (fim == MAX - 1) fim = 0; else fim = fim + 1;` - Esta expressão faz a verificação, mas é um pouco mais complexa do que o necessário. c) `fim = fim - 1;` - Esta expressão não é correta para uma inserção, pois está decrementando o índice. d) `fim = (fim + 1) % MAX;` - Esta expressão é a forma correta e mais eficiente, pois utiliza o operador módulo para garantir que o índice "fim" retorne ao início do array quando atingir o final. e) `fim = (fim % MAX) + 1;` - Esta expressão não é correta, pois pode resultar em um índice fora do limite do array. Portanto, a alternativa correta e mais eficiente para atualizar o índice "fim" após uma inserção em uma fila circular é: d) fim = (fim + 1) % MAX;