#include <stdio.h>
#define MAX 99
typedef struct typePilha {
int topo;
int vet[MAX];
} typePilha;
void inicia (typePilha *p)
{
p->topo = -1;
}
int cheia (typePilha *p)
{
return (p->topo==MAX-1);
}
int vazia(typePilha *p)
{
return (p->topo==-1);
}
int push (typePilha *p, int val)
{
if (cheia(p))
return 0; // pilha cheia
p->vet[++p->topo]=val;
return 1;
}
int pop (typePilha *p, int *val)
{
if (vazia(p))
return 0; // pilha vazia
*val=p->vet[p->topo--];
return 1;
}
int main(){
int i, dado;
typePilha pilha;
inicia(&pilha);
while (1){
if (cheia (&pilha))
break;
printf("Digite o valor(negativo p/ parar)\n",i);
scanf("%d", &dado);
if (dado >= 0){
push(&pilha, dado);
}
else
break;
}
printf("Topo-> ");
while (!vazia(&pilha)) {
pop(&pilha, &dado);
printf("%d -> ",dado);
}
printf("Inicio da pilha");
fprintf(stdout,"\n\n");fflush(stdout);
return 0;
}