colas simples

Iniciado por nevfuck, 1 Octubre 2010, 15:07 PM

0 Miembros y 1 Visitante están viendo este tema.

nevfuck

¿algun ejemplo de colas en c++? simple y entendible asi como este:

#include "stdio.h"
#include "iostream.h"
#include  MAX_COLA 50

typedef int tipodato;

typedef  struct
{ int elems;
int final, frente;
tipodato elementos[MAX_COLA];
} colacir;

/*  inicializa la cola */
void crearcola(colacir &cola);

/* retorna el indice del siguiente elemento */
int siguiente(int i);

/* retorna 1 si la cola esta vacia */
int vacia(colacir cola);

/*retorna 1 si la cola esta llena*/
int llena(colacir cola);

/* inserta un elemento al final de la cola*/
void encolar(colacir &cola,tipodato elem);

/* retira el elemento del inicio de la col*/
tipodato desencolar(colacir &cola);

/* obtiene el elmento del inicio de la cola */
tipodato frente(colacir cola);

/* reporta todos los elementos de la cola */
void visualizar(colacir cola);


/** DESARROLLO DE FUNCIONES  **/

void crearcola(colacir &cola)
{
cola.elems = cola.frente = 0;
cola.final =MAX_COLA-1;
}

int siguiente(int i)
{
   return ((i+1) % MAX_COLA);
}

int vacia(colacir cola)
{
   return (cola.elems == 0);
}

int llena(colacir cola)
{
return (cola.elems == MAX_COLA);
}

void encolar(colacir &cola, tipodato elem)
{
cola.elems++;
cola.final=siguiente( cola.final);
cola.elementos[cola.final] = elem;
}

tipodato desencolar(colacir &cola)
{
int elem;
cola.elems--;
elem = cola.elementos[cola.frente];
cola.frente=siguiente(cola.frente);
return elem;
}

tipodato frente(colacir cola)
{
   return cola.elementos[cola.frente];
}

void visualizar(colacir cola)
{
if(!vacia(cola))
   {
       cout<<desencolar(cola);cout<<"  ";
       visualizar(cola);
   }
} :D

Littlehorse

Probaste buscando aca u acá ;D?

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.