Colas

6
Se considera una cola frente a una ventanilla en la cual si un cliente al llegar a la misma no puede ser atendido, se le reintegra a la cola a la posición nº 10, si hay más de 10 personas, o al final de la misma, en caso contrario. Se pide diseñar un procedimiento de ATENCION (lo que debe suceder cuando un cliente es atendido), REINGRESO (vuelta a la cola) y otro de INGRESO (inicial) en cola. Todo ello con vistas a que el reingreso sea sencillo, para lo que se sugiere controlar el nº de personas en la cola, y en su caso, un puntero al elemento adecuado de la cola para ejecutar el reingreso. #include <iostream> #include <conio.h> #include <stdlib.h> using namespace std; struct nodo { int dni; struct nodo *sgte;

description

Colas

Transcript of Colas

Se considera una cola frente a una ventanilla en la cual si un cliente al llegar a la misma no puede ser atendido, se le reintegra a la cola a la posicin n 10, si hay ms de 10 personas, o al final de la misma, en caso contrario. Se pide disear unprocedimiento de ATENCION (lo que debe suceder cuando un cliente esatendido), REINGRESO (vuelta a la cola) y otro de INGRESO (inicial) en cola.Todo ello con vistas a que el reingreso sea sencillo, para lo que se sugiere controlar el n de personas en la cola, y en su caso, un puntero al elemento adecuado de la cola para ejecutar el reingreso.

#include #include #include

using namespace std; struct nodo{ int dni; struct nodo *sgte;}; //Las colas, al ser listas, trabajan con nodos. En este caso, trabajamos con el DNI del Cliente.

struct cola{ nodo *delante; nodo *atras ;}; //Estructura de la cola en s. //MTODOS

//Agregar Cliente a la Cola de espera.void registrar( struct cola &q, int valor ){ struct nodo *aux = new(struct nodo); aux->dni = valor; aux->sgte = NULL; if( q.delante == NULL) q.delante = aux; //El cliente se posiciona enseguida del ltimo. else (q.atras)->sgte = aux; q.atras = aux; //Puntero que apunta el ltimo Cliente. } //Atender Clienteint atender( struct cola &q ){ int num ; struct nodo *aux ; aux = q.delante; //Debemos sacar a este Cliente del inicio de la cola (est esperando all). num = aux->dni; q.delante = (q.delante)->sgte; delete(aux); //Se libera una posicin. return num;} //Muestra la Cola de Clientesvoid muestraCola( struct cola q ){ struct nodo *aux; aux = q.delante; while( aux != NULL ) { cout