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:
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?
Pergunta
Prove Yourself
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 programaAo 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.