#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