Pilhas
#include
#include
#include
#include
// ------------------------------------- Defini‡äes
#define SUCESSO 0
#define FALTA_DE_MEMORIA 1
#define PILHA_VAZIA 2
// -------------------------------------- Tipos de Dados
typedef int TDADOS;
typedef struct nodo { TDADOS info; struct nodo *seg; } TNODO;
typedef struct { TNODO *topo; } TPILHA;
// -------------------------------------------- Prototypes
void Cria_Pilha(TPILHA *p); int Push(TPILHA *p, TDADOS dado); int Pop(TPILHA *p, TDADOS *dado); int Consulta_Pilha(TPILHA p, TDADOS *dado); void Imprime_Erro(int erro); void Exibe_Pilha(TPILHA p);
// -------------------------------------------- Programa Principal
int main(void)
{
TPILHA p; TDADOS valor; char tecla; int erro;
Cria_Pilha(&p); do { Exibe_Pilha(p); printf("[P]ush, p[O]p, [C]onsultar ou [F]im?"); do { tecla = toupper(getchar()); } while (!strchr("POCF",tecla)); switch (tecla) { case 'P': printf("Valor a ser Empilhado: "); scanf("%d",&valor); erro = Push(&p,valor); if (erro) Imprime_Erro(erro); break; case 'O': erro = Pop(&p,&valor); if (erro) Imprime_Erro(erro); else printf("Valor Desempilhado: %d, tecle algo",valor); break; case 'C': erro = Consulta_Pilha(p,&valor); if (erro) Imprime_Erro(erro); else printf("Topo: %d, tecle algo",valor); break; } } while (tecla != 'F');
}
// ---------------------------------------------- Cria_Pilha
void Cria_Pilha(TPILHA *p)
{
p->topo = NULL;
}
// ---------------------------------------------- Push
int Push(TPILHA *p, TDADOS dado)
{
TNODO *t;
t = (TNODO *) malloc(sizeof(TNODO)); if (t == NULL) return(FALTA_DE_MEMORIA); else { t->info = dado; t->seg