Hola, estoy estudiando este interesante mundo de las pilas y colas.He hecho el siguiente programa que lee una secuencia de numeros y los devuelve al revés. 
Adjunto el codigo en C para que me puedan decir si esta bien, en especial las funciones, gracias.
#include <stdio.h>
#define MAXPILA 5
typedef struct
{
   int pilavector[MAXPILA];
   int cimpila;
}Tpila;
void crear_pila(Tpila *pila)
{
   pila->cimpila=-1;
}
int pila_vacia(Tpila pila)
{
   if (pila.cimpila=-1)
   {
      return 1;
   }
   else
   {
      return 0;
   }
}
int pila_llena(Tpila pila)
{
   return (pila.cimpila==MAXPILA-1);
}
void pushpila(Tpila *pila, int n)
{
   pila->pilavector [++pila->cimpila] = n;
}
int poppila(Tpila *pila)
{
   return pila->pilavector[pila->cimpila];
   pila->pilavector[--pila->cimpila];
}
void main ()
{
   Tpila mi_pila;
   int n;
   crear_pila (&mi_pila);
   printf ("Escribe el primer número de la secuencian");
   scanf ("%d",&n);
   while (n!=0)
   {
      if (!pila_llena (mi_pila))
         pushpila (&mi_pila,n);
      else
         printf ("La pila ya está llenan");
      printf ("Escribe el siguiente número de la secuencian");
      scanf ("%d",&n);
   }
   printf("Ahora los números al revésn");
   while (!pila_vacia (mi_pila))
   {
      poppila(&mi_pila);
      printf ("%d",&n);
   }
}