COLAS EN C++

Lo mejor en colas "En C++" aclarando

Aqui les dejo el codigo fuente del manejo de colas

Vienen todas sus funciones por separado como borrar, push, inicializar, ETC.

DESCARGAR EN .CPP


/*****************************************************************************
 *            Tarea: Colas C++                                                                                                            *         
 *            Programador: Julio César Leyva Rodrirguez                                                                * 
 *            Instituto Tecnonolgico de Los Mochis                                                                           *  
 *            HTTP://Shalom-now.blogspot.com                                                                                 *
 *****************************************************************************



#include <conio.h>
#include <iostream.h>
#define max 100
typedef int tipodatocola;
typedef struct cola
{
tipodatocola *cola;                            
int frente;
int final;
};

//INICIALIZAR COLA
void inicializarcola(cola *inicializar)
{
inicializar->frente=max-1;
inicializar->final=-1;
gotoxy(40,5);    cout<<"SE HA INICIALIZADO LA COLA";
}

//COLA LLENA
int colallena(cola *llena)
{
if(llena->final==llena->frente-1)
    {
    return(1);
    }
else
    {
    return(0);
    }
}

//COLA VACIA
int colavacia(cola *v)
{
if((v->frente==v->final) || (v->final==-1 && v->frente==max-1))
    {
        return(1);
    }
else
    {
    return(0);
        }
}

void push(cola *z)
{
if(z->final==max-1)
    {                      
    (z->final)=-1;
    cout<<"Inserte el dato ";cin>>*(z->cola+z->final+1);
    }         
else
    {                                                                     
    (z->final)++;
        cout<<"Inserte el dato ";    cin>>*(z->cola+z->final);
        }
}

void insertar(cola *i)
{
tipodatocola cliente;
if(colallena(i)==1)
    {           
    cout<<"La cola esta llena";
    }
else
    {
    push(i);
    }
}       

tipodatocola pop(cola *c)
{
tipodatocola dato;
if(c->frente==max-1 && c->final>-1)
    {      
    c->frente=0;
    dato=*(c->cola+c->frente);
        return(dato);
    }
else                            
    {
    c->frente=c->frente+1;
    dato=*(c->frente+c->cola);
        return(dato);
        }
}

void borrar(cola *borrar)
{
if(colavacia(borrar)==1)
    {
    cout<<"La cola esta vacia";
    }
else
    {
    cout<<"Se ha eliminado el dato "<<pop(borrar);
    }
}

void visualizarcola(cola *v)
{
if(colavacia(v)==1)
    {
    cout<<"No hay datos";
    }
else
    {
    for(int x=v->frente; x<=v->final; x++)
        {
        if(x==max-1)
            {
            x=0;
                        }
        gotoxy(x+20,25);    cout<<*v->cola+1;
        }
        }

}   
     



//MENU
void menu(cola *menu)
{                                                     
int op;
do

    {
    clrscr();
    cout<<"Frente "<<menu->frente;
        cout<<"\nFinal "<<menu->final;
        cout<<"\nCola "<<(*menu->cola+menu->frente);
     gotoxy(1,5);    cout<<"MENU";
    gotoxy(1,6);    cout<<"1. INICIALIZAR";
    gotoxy(1,7);    cout<<"2. INSERTAR";
    gotoxy(1,8);    cout<<"3. BORRAR";
    gotoxy(1,9);    cout<<"ELIGA UNA OPCION [   ]";
    gotoxy(20,9);    cin>>op;
    switch(op)
        {
        case 1:
            inicializarcola(menu);
            getch();
            break;
        case 2:
            insertar(menu);
            getch();
            break;
        case 3:
                borrar(menu);
            getch();
                        break;
        case 4:
            visualizarcola(menu);
            getch();
                        break;
        }
    }
    while(op!=5);
}
main()
{
cola colita;
tipodatocola cola[max];
colita.cola=&cola[0];
menu(&colita);
}



0