Inclusão e exclusão de elementos em uma pilha
Autor: Luciana Sondermann | Publicado: 2011-09-29T20:36:00-03:00

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int empilhar(int *pilha, int elemento, int tam, int *pont)
{
&nbsp;&nbsp;&nbsp; if(tam==*pont)
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("\nPilha cheia!\n");
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return 0;
&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; else{
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; pilha[*pont]=elemento;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *pont=*pont+1;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return 1;
&nbsp;&nbsp;&nbsp; }
}

int desempilhar(int *pilha, int tam, int *pont){
&nbsp;&nbsp;&nbsp; if(*pont==0)
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("\nPilha ja vazia!\n");
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return 0;
&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; else{
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *pont=*pont-1;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; pilha[*pont]=NULL;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return 1;
&nbsp;&nbsp;&nbsp; }
}
int main() {

&nbsp;&nbsp;&nbsp; char op;
&nbsp;&nbsp;&nbsp; int ok, tam, *pilha, elemento,pont=0,i;
&nbsp;&nbsp;&nbsp; printf("Informe o tamanho desejado para a pilha: ");
&nbsp;&nbsp;&nbsp; scanf("%d",&amp;tam);
&nbsp;&nbsp;&nbsp; if((pilha=(int*)malloc(tam*sizeof(int)))==NULL) exit(1);
&nbsp;&nbsp;&nbsp; do{
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("\n(e)mpilhar (d)esempilhar (s)air: ");
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; getchar();
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; scanf("%c",&amp;op);
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; switch (op){
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 'e':
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("\nInforme o elemento a ser inserido: ");
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; scanf("%d",&amp;elemento);
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ok=empilhar(pilha,elemento,tam,&amp;pont);
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(ok)printf("\nEmpilhamento feito com sucesso!\n");
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else printf("\nNao foi possivel inserir o novo elemento\n");
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(i=0;i&lt;tam;i++){
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("%d\t",pilha[i]);}
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("\n");
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 'd':
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ok=desempilhar(pilha,tam,&amp;pont);
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(ok)printf("\nElemento retirado com sucesso!\n");
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else printf("\nNao foi possivel retirar o elemento\n");
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(i=0;i&lt;tam;i++){
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("%d\t",pilha[i]);}
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("\n");
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }while(op!='s');
&nbsp;&nbsp;&nbsp; return 0;
}