Faça uma função para retornar o número de elementos da pilha que possuem valor par.
Passo 1
Resumo: temos uma pilha e queremos uma função que conte quantos elementos têm valor par. Isso envolve o conteúdo de pilhas e técnicas para percorrer todos os itens sem perder a estrutura original.
Passo 2
Estratégia geral: vamos usar recursão. A cada chamada, verificamos se a pilha está vazia (caso base), senão removemos o topo, contamos recursivamente os pares no restante, checamos se o valor removido é par e depois o empilhamos de volta para restaurar a pilha.
Passo 3
Caso base da recursão: se a pilha estiver vazia (teste com uma função como isEmpty), não há elementos a verificar, então retornamos zero.
Passo 4
Passo recursivo: removemos o elemento do topo (pop), chamamos a função recursivamente para contar pares no restante da pilha, verificamos se o valor removido é par (valor % 2 == 0) e, em caso afirmativo, somamos 1 ao resultado da chamada recursiva. Por fim, empilhamos de volta o valor removido (push) para manter a pilha intacta e retornamos o total obtido.
Resposta
// Exemplo em C
int contarPares(Pilha *p) {
// Caso base: pilha vazia
if (estaVazia§) {
return 0;
}
// Remove o topo para examinar
int x = pop§;
// Conta pares no restante da pilha
int cont = contarPares§;
// Se x for par, incrementa
if (x % 2 == 0) {
cont++;
}
// Restaura a pilha
push(p, x);
return cont;
}
int contarPares(Pilha *p) {
// Caso base: pilha vazia
if (estaVazia§) {
return 0;
}
// Remove o topo para examinar
int x = pop§;
// Conta pares no restante da pilha
int cont = contarPares§;
// Se x for par, incrementa
if (x % 2 == 0) {
cont++;
}
// Restaura a pilha
push(p, x);
return cont;
}