¿Cómo se programa una cola circular en C y C++?

No se como hacer una cola circular ...
Ni idea!
Respuesta
1
No me gusta dar las cosas así como así pero ahí te va el código:
Si tienes dudas acerca de como funciona mandame otra pregunta pero creo que con el código bastará:
//Carlos Alberto Pérez Avalos
//ITAM 2001
#include <iostream.h>
#define MAX 5
template <class T>
class colacir
{
private:
T arreglo[MAX];
int frente, final;
public:
colacir ();
int colacirllena ();
int colacirvacia ();
void operator + (T elem);
void operator - (T *elem);
void imprimecolacir ();
};
template <class T>
colacir<T>::colacir ()
{
frente = -1;
final = -1;
}
template <class T>
int colacir<T>::colacirllena ()
{
if ((frente == 0 && final == MAX-1) || ((final+1) == frente))
return 1;
return 0;
}
template <class T>
int colacir<T>::colacirvacia ()
{
if (frente == -1 && final == -1)
return 1;
return 0;
}
template <class T>
void colacir<T>::operator + (T elem)
{
if (frente == -1)
frente = 0;
final = (final + 1)%MAX;
arreglo[final] = elem;
}
template <class T>
void colacir<T>::operator - (T *elem)
{
*elem = arreglo[frente];
if (frente == final)
{
frente = -1;
final = -1;
}
else
frente = (frente+1)%MAX;
}
//*************************************************************************
//falta corregir la impresion
template <class T>
void colacir<T>::imprimecolacir ()
{
int x;
if (frente < final)
{
cout <<frente<<endl;
cout <<final<<endl;
for (x=frente; x<=final; x++)
cout <<arreglo[x]<<" ";
}
else
{
if (final != -1)
{
cout <<"entro al else"<<endl;
cout <<frente<<endl;
cout <<final<<endl;
for (x=1; x<final; x++)
cout <<arreglo[x]<<" ";
for (x=frente; x<MAX; x++)
cout <<arreglo[x]<<" ";
}
}
}
void main ()
{
colacir<int> objcolacir;
int dato, x;
while (objcolacir.colacirllena () == 0)
{
cout <<"Dame un valor"<<endl;
cin >>dato;
objcolacir + dato;
}
objcolacir.imprimecolacir ();
int elem;
while (objcolacir.colacirvacia () == 0)
{
objcolacir - &elem;
cout <<elem<<endl;
}
cout <<"despues de vaciar"<<endl;
objcolacir.imprimecolacir ();
}
Te decía que no me gustaba dar las cosas así normalmente los explico pero ando un poco corto de tiempo, si gustas manda otra pregunta y mañana te lo explico aun que me imagino que con el código y lo que ya has de saber de colas simples no hay problema pero si lo hay mandame la pregunta
Byte suerte
Saludos desde mexico!
Primeramente gracias por contestar tan rapido.
Realmente si se como funciona la cola circula, lo que pasa es que me costaba armar el programa en c (aunque esta en c++), pero ya viendo este ejemplo me doy una clara idea, te lo agradezco mucho... ya que otra gente no se tomaría la molestia de andar contestando dudas!
Te lo agradezco nuevamente gracias! :* :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas