Ir ao conteúdo
  • Cadastre-se

C error: conflicting types for 'desenfila'


andrelopes0

Posts recomendados

Estou com esse exercício sobre árvores. Tenho que imprimir os elementos da árvore em preOrdem e em nível.

Está dando erro na compilação na função desenfila. Alguém sabe como resolvo isso?

 

 

#include<stdio.h>
#include<stdlib.h>

struct NO{
    int info;
    struct NO *esq;
    struct NO *dir;
};
typedef struct NO* ArvBin;

ArvBin raiz;

typedef struct a{
    ArvBin no;
    struct a *prox;
}fila;

fila *f = NULL;

ArvBin cria_ArvBin(){
    ArvBin raiz = (ArvBin*) malloc(sizeof(ArvBin));
    if(raiz != NULL)
        raiz = NULL;
    return raiz;
}

int insere_ArvBin(int valor){
    ArvBin novo;
    novo = (struct NO*) malloc(sizeof(struct NO));
    if(novo==NULL)
        return 0;
    novo-> info = valor;
    novo-> dir = NULL;
    novo-> esq = NULL;

    if(raiz==NULL)
        raiz = novo;
    else{
        ArvBin atual = raiz;
        ArvBin ant = NULL;
        while(atual != NULL){
            ant = atual;
            if(valor == atual->info){
            free(novo);
            return 0;
            }
            if(valor> atual->info)
                atual = atual->dir;
            else
                atual = atual->esq;
        }
        if(valor > ant->info)
            ant->dir = novo;
        else
            ant->esq = novo;
    }
    return 1;
}

void imprime(){
    ArvBin aux;

    enfila(raiz);

    while(f!=NULL){
        aux = desenfila(f);
        printf ("%d",aux->info);
        enfila(aux->esq);
        enfila(aux->dir);
    }
}

void enfila(ArvBin p){
    fila *temp;
    fila *aux;

    if (p==NULL)
        return;

    aux = (fila *)malloc(sizeof(fila));
    aux->no = p;
    aux->prox = NULL;

    if (f!=NULL){
        temp = f;
        while (temp->prox!=NULL) temp = temp->prox;
        temp->prox = aux;
    } else
        f = aux;
}

ArvBin desenfila(){
    ArvBin aux;
    fila *temp;

    temp = f;
    f = f->prox;

    aux = temp->no;
    free(temp);

    return aux;
}

void preOrdem_ArvBin(ArvBin r){

    printf("%d ", r->info);

    if(r->esq){

        preOrdem_ArvBin(r->esq);

    }
    if(r->dir){

        emOrdem_ArvBin(r->dir);

    }

}

ArvBin inicializa (){
    return NULL;
}

int main(){

int num, cont = 0;

raiz = inicializa();

while(cont<10){
    scanf("%d", &num);
    insere_ArvBin(num);
    cont++;
}

preOrdem_ArvBin(raiz);

printf("\n");
imprime(raiz);

return 0;

}
 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...