Clique no botão BACK do seu navegador para voltar à página anterior /* Pilha Dinâmica em linguagem C*/ /* Autor : Alexandro Augusto Parra Anselmo*/ #include "alloc.h" #include "stdlib.h" #include "stdio.h" #include "conio.h" struct pilha { int elemento; struct pilha *proximo; }; struct pilha *base=NULL, *topo=NULL; /*------Push----*/ void push(int elemento) { struct pilha *novo_elemento; if ((novo_elemento=(struct pilha *)malloc(sizeof(struct pilha)))==NULL) printf("Nao ha memoria, Stack Overflow"); else { novo_elemento->elemento=elemento; novo_elemento->proximo=NULL; if (base==NULL) base=topo=novo_elemento; else { topo->proximo=novo_elemento; topo=topo->proximo; }; }; }; /*----Pop-----*/ int pop (void) { struct pilha *aux; int elemento; if (topo) { if (base==topo) { elemento=base->elemento; free(base); base=topo=NULL; return elemento; } else { for (aux=base; aux->proximo!=topo; aux=aux->proximo); topo=aux; aux=aux->proximo; elemento=aux->elemento; free(aux); topo->proximo=NULL; return elemento; }}else { printf("A pilha esta vazia, Stack underflow"); return NULL; }; }; /*----List-----*/ void list (void) { struct pilha *aux1, *aux2; if (topo) { if (base==topo) printf("\n%d",base->elemento); else { for (aux1=topo; aux1!=base;aux1=aux2) { for( aux2=base; aux2->proximo!=aux1;aux2=aux2->proximo); printf("\n%d",aux1->elemento); } printf("\n%d",aux1->elemento); getch(); } } else printf("\nA pilha esta vazia"); getch(); }; /*-----fim-----*/ void fim (void) { struct pilha *aux1, *aux2; if (topo) for (aux1=aux2=base;aux2;aux1=aux2) { aux2=aux1->proximo; free(aux1); }; }; /*-------Menu----*/ void menu (void) { int opcao, elemento; clrscr(); printf("\n 1- Push"); printf("\n 2- Pop"); printf("\n 3- List"); printf("\n 4- Fim"); printf("\nOpcao ==>"); scanf("%d",&opcao); switch(opcao) { case 1 : printf("\nEntre com o elemento"); scanf("%d",&elemento); push(elemento); menu(); break; case 2 : elemento= pop(); if (elemento!=NULL) printf("%d",elemento); menu(); break; case 3 : list(); menu(); break; case 4 : fim(); clrscr(); break; default : printf ("Opcao invalida"); } } /*--------main--------*/ void main(void) { menu(); }