//prioriza velicidad typedef int contenedor[MAX]; typedef struct tcola{ contenedor datos; int frente; int fin; }; void iniciar_cola(tcola &q) { q.frente=MAX-1; //frente q.fin=MAX-1; //final } int siguiente(int indice) { if (indice==MAX-1) return 0; else return (indice+1); } int anterior(int indice) { if (indice==0) return MAX-1; else return (indice-1); } bool cola_llena(tcola q) { return(siguiente(q.fin)==q.frente); //cantidad } bool cola_vacia(tcola q) { return(q.fin==q.frente); } //Bicola con entrada restringida void agregar_cola(tcola &q, int nuevo) { if (cola_llena(q)==true) cout << "cola COMPLETA"; else { q.fin=siguiente(q.fin); q.datos[q.fin]=nuevo; } } //modifica salida int quitar_cola(tcola &q, int op) //op=1 frente, op=2 final {int aux; if (cola_vacia(q)==true) aux=-1; else { if(op==1) { q.frente=siguiente(q.frente); aux=q.datos[q.frente]; } else { aux=q.datos[q.fin]; q.fin=anterior(q.fin); } } return(aux); } int consultar_primero(tcola q) { int consultado; if (cola_vacia(q)==true) consultado=-1; else consultado= q.datos[siguiente(q.frente)]; return(consultado); } int consultar_ultimo(tcola q) {int consultado; if (cola_vacia(q)==true) consultado=-1; else consultado=q.datos[q.fin]; return(consultado); }