typedef struct tnodo *pnodo; typedef struct tnodo { int dato; pnodo ant; pnodo sig; }; typedef struct tcola{ pnodo inicio; pnodo fin; int cont; }; void iniciar_cola(tcola &lista){ lista.inicio=NULL; lista.fin=NULL; lista.cont=0; } void crear_nodo(pnodo &nuevo, int valor){ nuevo = new tnodo; if(nuevo != NULL){ nuevo->dato=valor; nuevo->ant=NULL; nuevo->sig=NULL; }else cout<<"MEMORIA INSUFICIENTE"<sig=nuevo; nuevo->ant=lista.fin; lista.fin=nuevo; } lista.cont++; } } bool cola_vacia(tcola lista){ return lista.cont==0; } int quitar_cola(tcola &lista){ //por inicio pnodo aux; int eliminado; if(lista.inicio==NULL){//cola_vacia(lista)==true aux=NULL; eliminado=-1; }else{ if(lista.inicio==lista.fin){ aux=lista.inicio; eliminado=aux->dato; lista.inicio=NULL; lista.fin=NULL; }else{ aux=lista.inicio; eliminado=aux->dato; lista.inicio=lista.inicio->sig; lista.inicio->ant=NULL; aux->sig=NULL; } lista.cont--; } delete(aux); return eliminado; } int consultar_primero(tcola lista){ int valor; if(cola_vacia(lista)!=true) valor=lista.inicio->dato; else valor=-1; return valor; } int consultar_ultimo(tcola lista){ int valor; if(cola_vacia(lista)!=true) valor=lista.fin->dato; else valor=-1; return valor; }