Faça uma função para retornar o número de elementos da fila que possuem valor par.
Passo 1
O enunciado pede para construir uma função que receba uma fila de inteiros e retorne quantos elementos dessa fila têm valor par. Estamos em Estruturas de Dados, mais especificamente trabalhando com filas e percorrimento de seus elementos.
Passo 2
Para não perder os dados originais da fila durante a varredura, vamos usar uma fila auxiliar. A ideia é retirar cada elemento da fila original, verificar se é par, atualizar um contador e então enfileirar esse mesmo elemento na fila auxiliar.
Depois de processar todos os elementos, a fila original ficará vazia e a fila auxiliar conterá todos os elementos na mesma ordem. Só falta transferir da fila auxiliar de volta para a original, restaurando-a ao estado inicial.
Depois de processar todos os elementos, a fila original ficará vazia e a fila auxiliar conterá todos os elementos na mesma ordem. Só falta transferir da fila auxiliar de volta para a original, restaurando-a ao estado inicial.
Passo 3
Implementamos as operações básicas: isEmpty(fila) para testar vazio, dequeue(fila) para remover e retornar o elemento do front, enqueue(fila, valor) para inserir ao final, e createQueue() para inicializar uma fila vazia.
Passo 4
No laço principal, enquanto a fila original não estiver vazia, fazemos dequeue, checamos paridade com
e incrementamos o contador se for par. Cada valor removido vai para a fila auxiliar. Em seguida, outro laço esvazia a fila auxiliar movendo tudo de volta para a original.
Passo 5
Ao final, retornamos o contador de valores pares.
Resposta
int countEven(Queue *q) {
Queue aux = createQueue();
int count = 0;
Queue aux = createQueue();
int count = 0;
// Percorre todos os elementos da fila original
while (!isEmpty(q)) {
int x = dequeue(q);
if (x % 2 == 0) {
count++;
}
enqueue(&aux, x);
}
// Restaura a fila original
while (!isEmpty(&aux)) {
enqueue(q, dequeue(&aux));
}
return count;
}