Este exercicio é o basico da parte de pilha estatica com uma struct. Tenho pronto aqui um exemplo das funções que eu costumo usar para pilha estatica, que fica facim para você adaptar para seu exercicio. So que ao inserir algo na pilha, voce utilisa uma struct em vez de um vetor simples igual no exemplo.
#include <stdio.h>
#include <stdlib.h>
int pilha [1000];
int topo,valor,opcao,i,aux;
bool programa = true;
void pilha_contruir (){
topo = -1;
}
bool pilha_vazia (){
if (topo==-1){
return true;
}
else {
return false;
}
}
bool pilha_cheia (){
if (topo==999){
return true;
}
else {
return false;
}
}
void inserirpilha (int valor){
if (pilha_cheia()==true){
printf("PILHA ESTA CHEIA");
}
else{
topo=topo+1;
pilha[topo]=valor;
printf("\nVALOR %d INSERIDO COM SUCESSO!",valor);
}
}
void retirarpilha (int &valor){
if (pilha_vazia()==true){
printf("\n\nPILHA ESTA VAZIA");
}
else {
valor = pilha[topo];
topo=topo-1;
printf("\n\nO VALOR %d FOI RETIRADO DA PILHA",valor);
}
}
int main()
{ printf("\033[44m");
printf("PROGRAMA PARA GERIR PILHA ESTATICA");
pilha_contruir();
while (programa=true){
printf("\n\n\n");
printf("\nESCOLHA:");
printf("\nDIGITE 1 PARA INSERIR DADOS NA PILHA");
printf("\nDIGITE 2 PARA RETIRAR VALOR DA PILHA");
printf("\nDIGITE 3 PARA MOSTRAR TAMANHO DA PILHA");
printf("\nDIGITE 4 PARA IMPRIMIR OS VALORES DA PILHA");
printf("\nINFORME A OPCAO DESEJADA: ");
setbuf(stdin,NULL);
scanf("%d",&opcao);
switch (opcao) {
case 1:
printf("\n\n\nINFORME O VALOR QUE DESEJA INSERIR: ");
scanf("%d",&valor);
inserirpilha(valor);
break;
case 2:
retirarpilha(valor);
break;
case 3:
printf("\nA PILHA TEM %d ITENS\n",topo+1);
break;
case 4:
aux=topo;
while (aux>-1){
printf("\n%d",pilha[aux]);
aux=aux-1;
}
break;
}
printf("\n\n");
system("pause");
system("cls");
}
return 0;
}