const int MAX=10; typedef struct tnodo *pnodo; typedef struct tnodo { int dato; pnodo sig; }; typedef struct tpila{ pnodo inicio; pnodo fin; int cont; }; void iniciar_pila(tpila &lista){ lista.inicio=NULL; lista.fin=NULL; lista.cont=0; } bool pila_llena(tpila lista){ return(lista.cont==MAX); } bool pila_vacia(tpila lista){ return(lista.cont==0); } void crear(pnodo &nuevo, int valor){ nuevo = new tnodo; if(nuevo != NULL){ nuevo->dato=valor; nuevo->sig=NULL; }else cout<<"MEMORIA INSUFICIENTE"<sig=lista.inicio; lista.inicio=nuevo; } lista.cont++; } } int quitar_pila(tpila &lista){ pnodo extraido; int valor; if(pila_vacia(lista)) valor=0; else{ valor=lista.inicio->dato; if(lista.inicio==lista.fin){ extraido=lista.inicio; lista.inicio=NULL; lista.fin=NULL; }else{ extraido=lista.inicio; lista.inicio=lista.inicio->sig; extraido->sig=NULL; } lista.cont--; } delete(extraido); return valor; } int tope_pila(tpila &lista){ int valor; if(pila_vacia(lista)==true) valor=0; else{ valor=lista.fin->dato; } return valor; }