Qué tal? Eso lo tengo pendiente, pero hace poco hice una implementación de una lista circular doblemente enlazada: 1drv.ms/u/s!AmTRXiIKXEiVymIR_wbIin2-r7Su?e=v7zToG Saludos!
En ese caso, en la estructura de Pila ademas del tope podrías agregar una variable altura, la cual se inicializa en 0 al crear la pila y se incrementa de 1 en 1 a medida que se insertan elementos. De esa manera solo queda crear una funcion que retorne pila->altura.