#include "pilhas.h"
Pilha *Pcria(void)
{
return Lcria();
}
void Pdestroi(Pilha *p)
{
Ldestroi(p);
}
Pilha *Pesvazia(Pilha *p)
{
return Lesvazia(p);
}
unsigned long Pquantos(Pilha *p)
{
return Ltamanho(p);
}
Pilha *Ppoe(Pilha *p, void *d)
{
return LinsereInicio(p, d);
}
void *Ptira(Pilha *p)
{
return LretiraInicio(p);
}
#ifdef TESTE
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
Pilha *p;
int val, *pval;
p = Pcria();
do
{
printf("Valor a inserir (0 para sair, negativo para retirar): ");
if(scanf("%d", &val) != 1)
return EXIT_FAILURE;
if(val < 0)
{
printf("Retirando: ");
if((pval = Ptira(p)) == 0)
puts("Pilha vazia!");
else
{
printf("Retirei %d.\n", *pval);
free(pval);
}
}
else if(val > 0)
{
printf("Inserindo: ");
if((pval = malloc(sizeof(int))) == 0)
return EXIT_FAILURE;
*pval = val;
if(Ppoe(p, pval) == 0)
puts("pilha cheia!");
else
printf("Inseri %d.\n", val);
}
}
while(val != 0);
if(Pquantos(p) != 0)
{
printf("Retirando:");
while((pval = Ptira(p)) != 0)
{
printf(" %d", *pval);
free(pval);
}
putchar('\n');
}
Pdestroi(p);
return EXIT_SUCCESS;
}
#endif