#include #include #include //#include 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 NULL bool PilaVacia(Pila p){ if(p==NULL) return true; else return false; } bool PilaLlena(Pila p){ return false; } TipoDato Tope(Pila p){ TipoDato Resultado; if(PilaVacia(p)==false) Resultado=p->Dato; return Resultado; } bool Apilar(Pila p, TipoDato e){ Nodo n; n=(Nodo)malloc(sizeof(struct TipoNodo)); 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{ initscr(); erase(); printw("Ponte las Pilas 1.2b\n\n"); printw(" 1.- Crear Pila\n"); printw(" 2.- Verificar si la Pila esta Vacia\n"); printw(" 3.- Verificar si la Pila esta Llena\n"); printw(" 4.- Desapilar un elemento\n"); printw(" 5.- Apilar un elemento\n"); printw(" 6.- Elemento Tope\n"); printw(" 0.- Salir\n"); printw("\nIngrese Opcion: "); opcion=getch(); switch (opcion){ case '1': if(CrearPila(p)==true) printw("\n\tPila creada o inicializada"); else printw("\n\tError en la creacion de Pila"); getch(); break; case '2': resultado=PilaVacia(p); if (resultado==true) printw("\n\tLa Pila se encuentra VACIA"); else printw("\n\tLa Pila NO se encuentra VACIA"); getch(); break; case '3': resultado=PilaLlena(p); if (resultado==true) printw("\n\tLa Pila se encuentra LLENA"); else printw("\n\tLa Pila NO se encuentra LLENA"); getch(); break; case '4': resultado=Desapilar(p); if (resultado==true) printw("\n\tSe ha desapilado un elemento correctamente"); else printw("\n\tNO se ha podido Desapilar un elemento"); getch(); break; case '5': Ingresar_Dato(e); resultado=Apilar(p,e); if (resultado==true) printw("\n\tSe ha podido APILAR el nodo CORRECTAMENTE"); else printw("\n\tNO se ha podido apilar el nodo"); getch(); break; case '6': resultado=PilaVacia(p); if (resultado==false){ e=Tope(p); Imprimir_Nodo(e); } else printw("\n\tLa pila se encuentra VACIA, NO se puede mostrar TOPE"); getch(); break; case '0': break; } endwin(); }while(opcion!='0'); return 0; }