TOPIC
Erro de Apresentação. Ajuda.
mbborges asked 4 years ago
Meu código está dando apenas erro de apresentação e não consigo identificar. Preciso de ajuda.
#include <stdlib.h>
#include <stdio.h>
typedef struct arv
{
int info;
struct arv *esquerda;
struct arv *direita;
} Arvore;
typedef struct lista
{
Arvore *info;
struct lista *prox;
} Lista;
typedef struct fila
{
struct lista *inicio;
struct lista *fim;
} Fila;
void insere_fila(Fila *f, Arvore *noh)
{
Lista *novo = (Lista *)malloc(sizeof(Lista));
novo->info = noh;
novo->prox = NULL;
if (f->fim != NULL)
{
f->fim->prox = novo;
}
else
{
f->inicio = novo; //fila tava vazia
}
f->fim = novo;
}
Arvore* retira_fila(Fila *f)
{
Lista *l;
Arvore *v = (Arvore *)malloc(sizeof(Arvore));
if (f->inicio /*ou fim*/ == NULL)
{
printf("Fila Vazia.\n");
exit(1);
}
l = f->inicio;
v = l->info;
f->inicio = l->prox;
if (f->inicio == NULL) /*Fila ficou vazia??*/
f->fim = NULL;
free(l);
return v;
}
Arvore* inserir_noh(Arvore *a, int v)
{
if (a == NULL)
{
a = (Arvore *)malloc(sizeof(Arvore));
a->info = v;
a->esquerda = NULL;
a->direita = NULL;
}
else if (v < a->info) a->esquerda = inserir_noh(a->esquerda, v);
else if (v > a->info) a->direita = inserir_noh(a->direita, v);
return a;
}
int main(int argc, char const *argv[])
{
int caso = 0, casos, num_noh, dado;
Fila *f = (Fila *)malloc(sizeof(Fila));
for (scanf("%d", &casos); casos > 0; casos--)
{
Arvore *a1 = (Arvore *)malloc(sizeof(Arvore));
a1 = NULL;
caso++;
for (scanf("%d", &num_noh); num_noh > 0; num_noh--)
{
scanf("%d", &dado);
a1 = inserir_noh(a1, dado);
}
insere_fila(f, a1);
printf("Case %d:\n", caso);
while (f->inicio != NULL)
{
a1 = retira_fila(f);
printf("%d ", a1->info);
if (a1->esquerda != NULL) insere_fila(f, a1->esquerda);
if (a1->direita != NULL) insere_fila(f, a1->direita);
}
printf("\n");
}
return 0;
}