/* Esta cola trabaja con estructuras, para crear nodos, que luego serán los componentes de la cola final, se redefinen con typedef para facilitar su uso, esta clase tiene los métodos esenciales para el manejo de colas */
struct nodocola { int dato; nodocola *dir; }; typedef nodocola *pnodo; class cola { private: pnodo pfren,pfin; public: cola(); ~cola(); void imprimir(); int desencolar(); void encolar(int x); }; cola::cola() { pfren=NULL; pfin=NULL; } cola::~cola() { pnodo p,q; if(pfren!=NULL) { p=pfren; while(p!=NULL) { q=p; p=(*p).dir; delete q; } pfren=NULL; pfin=NULL; } } void cola::encolar(int x) { pnodo p; p=new nodocola; (*p).dato=x; (*p).dir=NULL; if(pfren==NULL) pfren=p; else (*pfin).dir=p; pfin=p; } int cola::desencolar() { int k; pnodo p; if(pfren==NULL) cout<<"Lista vacia"<<endl; else { p=pfren; k=(*pfren).dato; pfren=(*pfren).dir; delete p; return k; } } void cola::imprimir() { pnodo p; p=pfren; while(p!=NULL) { cout<<(*p).dato<<" -> "; p=(*p).dir; } cout<<"NULL"<<endl; } |