I'm trying to complete this function that looks for all the elements that point to a certain class. How can I fix my code?
int log_obter_contagem_por_classe(Log **l, int classe){
int cont = 0;
Log *atual = *l;
if (*l == NULL){
return cont = 0;
}
while(atual != NULL){
if (classe == (atual->classe)){
cont++;
}
log_obter_contagem_por_classe(&(atual->esq), classe);
log_obter_contagem_por_classe(&(atual->dir), classe);
}
return cont;
}
This is the inclusion code:
void log_registrar(Log **l, int conta, int classe, int timer, int caixa){
if(*l == NULL){
*l = cria_log(conta,classe, timer, caixa);
}
Log *aux, aux2;
aux = *l;
if (conta < conta){
if(aux->esq == NULL){
aux->esq = cria_log( conta, classe, timer, caixa);
}
else{
log_registrar(aux->esq, conta, classe, timer, caixa);
}
}
else{
if(aux->esq == NULL){
aux->dir = cria_log( conta, classe, timer, caixa);
}
else{
log_registrar(aux->dir, conta, classe, timer, caixa);
}
}
}
Log* cria_log(int conta, int classe, int timer, int caixa){
Log *novo = (Log*)malloc(sizeof(Log));
if (novo == NULL){
exit(1); //caso ocorra erro no malloc
}
novo->conta = conta;
novo->classe = classe;
novo->timer = timer;
novo->caixa = caixa;
novo->dir = NULL; //cria raiz a direta
novo->esq = NULL; //cria raiz a esquerda
return novo;
}