Bom dia a todos, criei esse código, porem ao executar a pilha não esta imprimindo apenas mostrando o topo.
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
typedef int
tp_func;
typedef struct {
int topo;
tp_func func[MAX];
}tp_pilha;
tp_pilha pilha;
void inicializa_pilha(tp_pilha *f){
f-> topo =-1;
}
int pilha_vazia(tp_pilha *f){
if(f->topo ==-1);
return 1;
return 0;
}
int pilha_cheia(tp_pilha *f){
if(f-> topo == MAX-1)
return 1;
return 0;
}
int pilha_push(tp_pilha *f, tp_func c){
if(pilha_cheia(f))
return 0;
f->topo++;
f -> func[f->topo] = c;
return 1;
}
int pilha_pop(tp_pilha *f, tp_func *c){
if(pilha_vazia(f))
return 0;
*c = f->func[f->topo];
f-> topo--;
return 1;
}
int pilha_topo(tp_pilha *f, tp_func *c){
if(pilha_vazia(f))
*c = f->func[f->topo];
}
void imprime_pilha(tp_pilha f){
tp_func c;
while(!pilha_vazia(&f)){
pilha_pop(&f, &c);
printf("%d", c);
}
}
int main(){
tp_pilha pilha;
tp_func c;
inicializa_pilha(&pilha);
pilha_push(&pilha, 5);
pilha_push(&pilha, 9);
pilha_push(&pilha, 3);
pilha_push(&pilha, 1);
pilha_push(&pilha, 0);
printf("%d", pilha.topo);
imprime_pilha(pilha);
}