#ifndef _PILHA_H_ #define _PILHA_H_ #include "comum.h" /* Tipo abstrato Pilha: estrutura ligada e dinâmica */ typedef struct pilha { int info; /* informação */ struct pilha *prox; /* apontador para o próximo elemento */ } Pilha; /* Mensagens a serem utilizadas no pilha.c */ #define MSGPIL1 "Tentou acessar elemento de pilha vazia" /* Mensagem utilizada quanto tentar ler ou remover elemento de uma pilha vazia */ /* Operações sobre Pilha */ Pilha *pilCria(); /* Cria pilha vazia. */ void pilDestroi(Pilha **p); /* Destrói pilha. */ void pilEmpilha(Pilha **p, int x); /* Empilha elemento x. */ int pilDesempilha(Pilha **p); /* Desempilha elemento do topo. */ bool pilVazia(Pilha *p); /* Retorna true se a pilha estiver vazia e false no caso contrário. */ int pilTopo(Pilha *p); /* Consulta elemento do topo da pilha. */ /* Tipo abstrato PilhaS: estrutura seqüencial e dinâmica */ typedef struct pilhas { int *info; /* informação */ int nmax; /* número máximo de elementos que podem ser armazenados na pilha */ int topo; /* índice do elemento que se encontra no topo da pilha */ } PilhaS; /* Operações sobre Pilha (implementação seqüencial) */ PilhaS *pilsCria(int nmax); /* Cria pilha vazia com capacidade para armazenar nmax elementos e inicializa topo = 0. */ void pilsDestroi(PilhaS *p); /* Destrói pilha. */ void pilsEmpilha(PilhaS *p, int x); /* Empilha elemento x. */ int pilsDesempilha(PilhaS *p); /* Desempilha elemento x. */ bool pilsVazia(PilhaS *p); /* Retorna true se a pilha estiver vazia e false no caso contrário. */ bool pilsCheia(PilhaS *p); /* Retorna true se a pilha estiver cheia e false no caso contrário. */ int pilsTopo(PilhaS *p); /* Ler valor do topo da pilha. */ #endif