TÓPICO

Erro de Apresentação. Ajuda.

mbborges perguntou 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;
}

Lembre de não publicar soluções. Sua publicação pode ser revisada por nossos moderadores.

  • arahman5 respondido 4 years ago

    Can anyone answer what do {HARDEST (SOLVED), HARDEST (TRIED)} mean in profile???

  • Instagram-pedro_leocir respondido 4 years ago

    Pior que tive o mesmo probelma :(

    MOD
  • PedroFeitosa respondido 4 years ago

    "Obs: Não deve haver espaço em branco após o último item de cada linha e há uma linha em branco após cada caso de teste, inclusive após o último. " Além do '\n' após cada caso de teste, deve haver mais um 'n'. Retire o espaço após o ultimo elemento printado em cada caso de teste.

    MOD