Ir para conteúdo
Fórum Script Brasil
  • 0

Problema das caixas


Prove Yourself

Pergunta

Boa noite.

Estou tentando resolver o problema das caixas: As caixas são empilhadas. A primeira caixa é a ultima a ser retirada. A ultima adicionada será a primeira retirada. Consegui fazer o seguinte código:

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

#define TRUE 1;
#define FALSE 0;

struct caixa {
    int conteudo;
    struct caixa *caixa_de_baixo;
};

int adicionar(struct caixa *caixa_atual, int conteudo);

int remover(struct caixa *caixa_atual);

int adicionar(struct caixa *caixa_atual, int conteudo) {
    struct caixa *caixa_nova = (struct caixa *) malloc(sizeof(struct caixa));

    if(!caixa_nova) {
        printf("Não foi possível alocar memória\n");
        return FALSE;
    }

    caixa_nova->conteudo = conteudo;
    caixa_nova->caixa_de_baixo = caixa_atual;
    caixa_atual = caixa_nova;
    printf("Caixa Adicionada\nConteúdo: %d\n\n", caixa_atual->conteudo);

    return TRUE;
}

int remover(struct caixa *caixa_atual) {
    struct caixa *caixa_de_baixo;

    if(caixa_atual == NULL) {
        printf("Não existem caixas para remover\n");
        return FALSE;
    }


    printf("Caixa Removida\nConteúdo: %d\n", caixa_atual->conteudo);
    caixa_de_baixo = caixa_atual->caixa_de_baixo;
    free(caixa_atual);
    caixa_atual = caixa_de_baixo;

    return TRUE;
}

int main(void) {
    struct caixa *caixa_atual;
    caixa_atual = malloc(sizeof(struct caixa));
    caixa_atual = NULL;

    adicionar(caixa_atual, 1);
    adicionar(caixa_atual, 2);
    adicionar(caixa_atual, 3);

    remover(caixa_atual);

    return 0;
}
Saída do programa
C:\WINDOWS\system32\cmd.exe /c a.exe
Caixa Adicionada
Conte·do: 1

Caixa Adicionada
Conte·do: 2

Caixa Adicionada
Conte·do: 3

NÒo existem caixas para remover
Hit any key to close this window...

Ao invés de remover uma caixa, ele diz que não existem caixas para remover. O que estou fazendo errado?

Obrigado.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...