#include <stdio.h>#include <stdlib.h>#include <ncurses.h>//#include <pate.h>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;}bool PilaLlena(Pila p){ return true;}TipoDato Tope(Pila p){ TipoDato Resultado; if(PilaVacia(p)==false) Resultado=p->Dato; return Resultado;}bool Apilar(Pila p, TipoDato e){ return true;}bool Desapilar(Pila &P){ return true;}void Ingresar_Dato(TipoDato &Nodo){}void Imprimir_Nodo(TipoDato &Nodo){}int main(void){ Pila p=NULL; TipoDato e; char opcion; bool resultado=false; do{ system("clear"); printf("Ponte las Pilas 1.2b\n\n"); printf(" 1.- Crear Pila\n"); printf(" 2.- Verificar si la Pila esta Vacia\n"); printf(" 3.- Verificar si la Pila esta Llena\n"); printf(" 4.- Desapilar un elemento\n"); printf(" 5.- Apilar un elemento\n"); printf(" 6.- Elemento Tope\n"); printf(" 0.- Salir\n"); printf("Ingrese Opcion: "); scanf("%c",&opcion); switch (opcion){ case '1': if(CrearPila(p)==true) printf("\nPila creada o inicializada"); else printf("\nError en la creacion de Pila"); break; case '2': resultado=PilaVacia(p); if (resultado==true) printf("\nLa Pila se encuentra VACIA"); else printf("\nLa Pila NO se encuentra VACIA"); break; case '3': resultado=PilaLlena(p); if (resultado==true) printf("\nLa Pila se encuentra LLENA"); else printf("\nLa Pila NO se encuentra LLENA"); break; case '4': resultado=Desapilar(p); if (resultado==true) printf("\nSe ha desapilado un elemento correctamente"); else printf("\nNO se ha podido Desapilar un elemento"); break; case '5': Ingresar_Dato(e); resultado=Apilar(p,e); if (resultado==true) printf("\nSe ha podido APILAR el nodo CORRECTAMENTE"); else printf("\nNO se ha podido apilar el nodo"); break; case '6': resultado=PilaVacia(p); if (resultado==false){ e=Tope(p); Imprimir_Nodo(e); } else printf("La pila se encuentra VACIA, NO se puede mostrar TOPE"); break; case '0': break; } }while(opcion!='0'); return 0;}