#include "pilha.h" /************************************************************** #Funcão#: ## #Autor#: ## #Data#: ## #Descrição#: ## #Parâmetros#: #entrada#: ## #saída#: ## #Retorno#: ## #Modificação#: #data#: #99/99/9999# #autor#: ## #descrição#: ## **************************************************************/ #define TESTANULL(elemento,nomefuncao) if ( elemento == NULL) comAviso(AVS1,nomefuncao); /* Cria uma pilha vazia do tipo lista ligada. Lembre-se que a pilha do tipo lista ligada eh um apontador para o elemento no topo da pilha, e que o pilCria cria uma pilha vazia... */ Pilha *pilCria() { return NULL; } /* Libera a memoria dinamica ocupada pela pilha */ void pilDestroi(Pilha **p) { if ((*p) != NULL) { pilDestroi(&((*p)->prox)); free(*p); } } /* insere um elemento no topo da pilha */ void pilEmpilha(Pilha **p, int x) { Pilha *aux = NULL; TESTANULL(p,"pilEmpilha") else { aux = (Pilha*)malloc(sizeof(Pilha)); aux->info = x; aux->prox = *p; *p = aux; } } /* remove o elemento que esta no topo da pilha. o valor de retorno eh o valor armazenado naquele elemento */ int pilDesempilha(Pilha **p) { Pilha *aux =NULL; int x=0; TESTANULL(*p,"pilDesempilha") else { x = (*p)->info; aux = (*p); *p = (*p)->prox; free(aux); } return x; /* Observe que se p==NULL, retorna-se 0 Fica a cargo do usuario conferir e nao passar uma pilha vazia. */ } /* Retorna o valor true caso a pilha p esteja vazia, e false caso o contrario (verifique o tipo bool no arquivo comum.h */ bool pilVazia(Pilha *p) { return (p == NULL); } /* Retorna o valor do elemento no topo da pilha SEM RETIRA-LO! */ int pilTopo(Pilha *p) { int x = 0; TESTANULL(p,"pilTopo") else { x = p->info; } return x; } /* author: Gustavo Sverzut Barbieri (http://www.gustavobarbieri.com.br) */