#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#define MAX 21
//estrutura
typedef struct Caixas{
char cor[MAX];
struct Caixas *prox;
};
//variáveis globais
Caixas *topo; //ponteiro para o topo da pilha
//função auxiliar ler dados
void cor_caixa()
{system("cls");
printf("Entre com a cor da caixa: ");
fflush (stdin);
fgets (cor, MAX, stdin);
}
//função
void(){
cor_caixa(); //chama a função
Caixas *pnovo = (Caixas*) malloc(sizeof(Caixas)); //alocando memoria
strcpy(pnovo -> cor, cor);
pnovo -> prox = NULL;
if (topo == NULL)//se a pilha estiver vazia
topo = pnovo; //topo recebe o novo elemento
else{
pnovo->prox=topo;
topo=pnovo;
}
}
//função
void(){
Caixas *aux;
if(topo==NULL){
printf("\n\nErro, empilhamento de caixas vazias.\n\n");
return;
}else{
aux = topo;
topo = topo -> prox;
free(aux);
printf("\nCaixa removida do topo\n");
}
}
//função listar
void listar_caixas(){
Caixas *aux;
aux = topo;
printf ("\t\t\tEmpilhamento\n\n");
while(aux != NULL){
printf ("Cor: %s", aux -> cor);
aux = aux -> prox;
}
}
//função principal
int main(){
char op;
topo = NULL;//inicializando a pilha como vazia
do{
system("cls");
printf("\t\t\tEmpilhamento de caixas de copos");
printf("\n\n(E)mpilhar Caixa\n");
printf("(L)istar Estoque Caixa\n");
printf("(D)esempilhar Caixa\n");
printf("(S)air do Programa\n\n");
printf("Digite a opção");
op = toupper(getche());
switch(op){
case'E': ();
break;
case'L': listar_caixas() ;
break;
case'D': ();
break;
case'S': exit(0);
default: printf("\n\nOpcao invalida, digite novamente.\n\n");
}
system("PAUSE");
}while (op != 'S');
}