Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- // Cola estatica simple, implementacion basica ineficiente, utilizar listas.
- #define MAX_CLIENTES 100
- typedef struct tag_Queue{
- int id;
- float ts,td; // ts y td??
- }Queue,*PQueue;
- Queue cola[MAX_CLIENTES]; // cola de tamaño limitado
- static int iLastQueue; // indice cliente actual ingresado a la cola
- void Enqueue(void); // encola cliente
- void Dequeue(void); // desencola y atiende primer cliente que hay
- void showQueue(void); // Muestra toda la cola
- void destroyQueue(void); // simula destruccion, todas los clientes a 0, no se pueden mostrar
- int isFullQueue();
- int isEmptyQueue();
- int main(void){
- / Test Queue
- Enqueue();
- Enqueue();
- Enqueue();
- Enqueue();
- Enqueue();
- showQueue();
- Dequeue();
- showQueue();
- Dequeue();
- Dequeue();
- showQueue();
- Dequeue();
- showQueue();
- Enqueue();
- showQueue();
- Dequeue();
- showQueue();
- Dequeue();
- showQueue();
- Dequeue();
- int i;
- for(i=0;i<MAX_CLIENTES;i++) // llena la cola
- Enqueue();
- showQueue();
- Enqueue();
- Dequeue();
- showQueue();
- destroyQueue();
- showQueue();
- destroyQueue();
- return 0;
- }
- // Quita de la cola o atiende al primero que va quedando
- void Dequeue(void){
- int i;
- // no hay nadie
- if(isEmptyQueue())
- printf("\nError: La cola esta vacia, espere a que ingrese un cliente.\n\n");
- else if( iLastQueue == 1){ // hay un solo cliente
- iLastQueue--; // atiende y se retira
- }
- else{
- for(i = 0;i<iLastQueue-1;i++) // atiende al primero y avanza la cola
- cola[i] = cola[i+1];
- iLastQueue--; // un cliente menos
- }
- }
- // encola
- void Enqueue(void){
- static int id,ts,td;
- if(isFullQueue())
- printf("\nCola llena, atienda a los clientes para poder encolar nuevos clientes.\n\n");
- else{
- cola[iLastQueue].id = id++; // encola nuevo cliente
- cola[iLastQueue].ts = ts++;
- cola[iLastQueue].td = td++;
- iLastQueue++;
- }
- }
- void showQueue(void){
- int i;
- if(isEmptyQueue())
- printf("Error: La cola esta vacia, no se puede mostrar.\n\n");
- else{
- printf("Quedan %d clientes\n",iLastQueue);
- printf("+----------+----------+----------+\n");
- printf("|%*s|%*s|%*s|\n",10,"Id",10,"Ts",10,"Td");
- printf("+----------+----------+----------+\n");
- for(i = 0;i<iLastQueue;i++)
- printf("|%*d|%*lf|%*lf|\n",10,cola[i].id,10,cola[i].ts,10,cola[i].td);
- printf("+----------+----------+----------+\n\n");
- }
- }
- void destroyQueue(void){
- int i;
- Queue tmp;
- tmp.id = 0;
- tmp.ts = 0;
- tmp.td = 0;
- if(!isEmptyQueue()){
- for(i = 0;i<iLastQueue;i++){
- //cola[i].id = 0; // queda todo a 0
- //cola[i].ts = 0;
- //cola[i].td = 0;
- cola[i] = tmp;
- }
- iLastQueue = 0;
- }
- else
- printf("\nError: Cola vacia, no se puede destruir.\n\n");
- }
- int isFullQueue(){return iLastQueue == MAX_CLIENTES;}
- int isEmptyQueue(){return iLastQueue == 0;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement