#include <stdio.h>#include <stdlib.h>//#include <pate.h>/* chao con esto (por ahojra)typedef int Posicion;typedef int TipoDato;struct Pila{ Posicion Tope; struct Dato{ TipoDato d; Dato *next; };}// Solo por un uso mas didactico, Pila y Nodo son identicos, usandose indistintamente// cuando se les requieran :Pstruct Nodo{ Posicion Tope; struct Dato{ TipoDato d; Dato *next; };}*/typedef int TipoDato;struct TipoNodo{ TipoDato Dato; TipoNodo *next;};typedef TipoNodo *Pila;typedef TipoNodo *Nodo;/* Crea el primer elemento de la Pila, asigna NULL al puntero next y la ctm*/bool CrearPila(Pila *p){ p=(Pila)malloc(sizeof(struct TipoNodo)); if(p==NULL) return false; else{ p->next=NULL; return true; }}// Suponiendo que cuando se elimina el ultimo elemento de la Pila, el puntero// cabeza quede apuntando a NULLbool PilaVacia(Pila p){ if(p==NULL) return true; else return false;}TipoDato Tope(Pila p){ Tipo Dato Resultado; if(PilaVacia(p)==false){ Resultado=p->Dato return Resultado;}int main(void){ struct Pila *p=NULL; return 0;}