#include #include #define TAM 6 #define MAX TAM-1 typedef struct { int tope; int item[TAM]; }pila; int full(pila *); int empty(pila *); void push(pila *, int); void pop(pila *,int *); void main() { pila p,t; int dato,opc,elemento,flag=0; p.tope=0; do { printf("\nMENU-PILA"); printf("\n1-> Insertar elemento"); printf("\n2-> Eliminar elemento"); printf("\n3-> Eliminar elemento X"); printf("\n4-> Visualizar"); printf("\n5-> Salir"); printf("\n\nDe su opcion : "); scanf("%d",&opc); switch(opc) { case 1: if(!full(&p)) // si pila no esta llena { printf("\nDe el elemento a insertar: "); scanf("%d",&dato); push(&p,dato); printf("\nElemento insertado..."); } else { printf("\nERROR: Pila llena"); } break; case 2: if(!empty(&p)) { pop(&p,&dato); printf("\nEl elemento eliminado es %d",dato); } else { printf("\nERROR: Pila vac¡a"); } break; case 3: if(!empty(&p)) { printf("eliminar elemento seleccionado: "); scanf("%d",&elemento); if(p.tope != 1){ t.tope=0; do { pop(&p,&dato); if (dato != elemento) { push(&t,dato); } }while(!empty(&p)); do { pop(&t,&dato); push(&p,dato); }while(!empty(&t)); } else if(dato == elemento){pop(&p,&dato);} else {printf("el elemento no se encuentra en la pila");} } else { printf("\nERROR: Pila vac¡a"); } break; case 4: if(!empty(&p)) { t.tope=0; do { pop(&p,&dato); printf("\n%d",dato); push(&t,dato); }while(!empty(&p)); do { pop(&t,&dato); push(&p,dato); }while(!empty(&t)); } else { printf("\nERROR: Pila vac¡a"); } break; case 5: flag=1; break; case 6: flag=0; break; default: printf("\nopcion no valida..."); } if(!flag) { } }while(!flag); } int full(pila *p) { return(p->tope==MAX); } int empty(pila *p) { return(p->tope==0); } void push(pila *p,int dato) { if(!full(p)) { (p->tope)++; p->item[p->tope]=dato; //elemento[1]=dato } else printf("\nOVERFLOW"); } void pop(pila *p,int *dato) { if(!empty(p)) { *dato=p->item[p->tope]; (p->tope)--; } else printf("\nUNDERFLOW"); }