Gente preciso de ajuda pra terminar esse código! Não sei como faço para elaborar uma função que exiba o topo da pilha e que essa função imprima o elemento topo.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct prato {
char cor[50];
};
struct elemento {
struct prato item;
struct elemento *prox;
};
typedef struct elemento* Pilha;
Pilha* cria_pilha() {
Pilha* pi = (Pilha*)malloc(sizeof(Pilha));
if(pi != NULL)
*pi = NULL;
return pi;
}
int recupera_tamanho_pilha(Pilha* pi) {
if(pi == NULL)
return 0;
int tamanho = 0;
struct elemento* item = *pi;
while(item != NULL) {
tamanho++;
item = item->prox;
}
return tamanho;
}
void pilha_vazia(Pilha* pi) {
if(pi == NULL || *pi == NULL)
printf("\n Pilha está vazia!");
else
printf("\n Pilha não está vazia!");
}
int push(Pilha* pilha, struct prato p) {
if(pilha == NULL)
return 0;
struct elemento* aux = (struct elemento*)malloc(sizeof(struct elemento));
if(aux == NULL)
return 0;
aux->item = p;
aux->prox = (*pilha); //TOPO DA PILHA
*pilha = aux; //Novo elemento passa a ser o primeiro da pilha
return 1;
}
void main()
{
Pilha *pilha;
pilha = cria_pilha();
printf("\n Tamanho da pilha: %d", recupera_tamanho_pilha(pilha));
pilha_vazia(pilha);
struct prato p;
strcpy(p.cor, "Azul");
push(pilha, p);
strcpy(p.cor, "Verde");
push(pilha, p);
strcpy(p.cor, "Amarelo");
push(pilha, p);
strcpy(p.cor, "Preto");
push(pilha, p);
exibe_conteudo_pilha(pilha);
printf("\n Tamanho da pilha: %d", recupera_tamanho_pilha(pilha));
}