O programa esta desta maneira numeros digitados pelo usuário 5 2 3 0 o programa vai mostrar 05391 5391 ---------------------------------------------- tem que ficar assim numeros digitados pelo usuário 5 2 3 0 o programa vai mostrar 05391 obs: e para retirar ele vai perguntar quer tirar primeiro ou ultimo resposta primeiro mostra 5391 quer tirar primeiro ou ultimo resposta ultimo mostra 539 quer tirar primeiro ou ultimo resposta ultimo mostra 53 quer tirar primeiro ou ultimo resposta primeiro mostra 3 quer tirar primeiro ou ultimo resposta ultimo mostra FIM ----------------------------------------------- programação atual #include<stdio.h> #include<stdlib.h> struct lista{ int info; struct lista* prox; }; typedef struct lista Pilha; Pilha* initPilha(){ return NULL; } Pilha* push( Pilha *s, int elem ){ Pilha*no=(Pilha*) malloc (sizeof(Pilha)); no->info=elem; no->prox=s; s=no; return s; } Pilha* pop(Pilha *s, int *elem){ Pilha *no; if(s!=NULL) { no=s; s=s->prox; *elem=no->info; free(no); } return s; } int vazia (Pilha *s){ if (s == NULL) return 1; else return 0; } void libera (Pilha *s){ Pilha *p = s; Pilha *aux; while (p != NULL){ aux = p->prox; free (p); p = aux; } } void imprimePilha(Pilha *s){ Pilha *aux; aux = s; while (aux != NULL){ printf("%i ", aux->info); aux = aux->prox; } } void imprimeRecursivo(Pilha *s){ if (s == NULL) return; else { printf("%i ", s->info); imprimeRecursivo(s->prox); } } main(){ Pilha *p; int num; p = initPilha(); while(num!=0){ scanf("%i",&num); p=push(p,num); } imprimePilha(p); p=pop(p,&num); imprimePilha(p); libera (p); system("pause"); }