Sie sind auf Seite 1von 3

ESTRUCTURA DE DATOS AVANZADOS COLAS

ESTRUCTURA DINAMICA: COLAS

Una cola es una estructura de datos, donde los datos solo se insertan por un
extremo (atrs) y eliminan por el otro (adelante). El manejo es muy similar a las
listas enlazadas, es posible definir el manejo de una cola utilizando las mismas
funciones de las listas pero especificndolos.

Estas caractersticas implican un comportamiento de lista FIFO (First In First Out),


el primero en entrar es el primero en salir.

El nodo tpico para construir colas es el mismo que vimos para la construccin de
listas, con la agregacin de otra estructura que tiene dos punteros mas, adelante
(apunta al primer elemento) y atrs (apunta al ltimo elemento).

struct nodo{
int nro;
struct nodo * sgte;
};

struct cola{
struct nodo * delante;// apunta al primero
struct nodo * atras;// apunta al ultimo
};

EJEMPLO

Ejercicio que ingresa elimina elementos, muestra y elimina toda la cola

#include<iostream.h>
void inicializa(struct cola &);
void encola(struct cola &, int);
void verCola(struct cola);
void vaciaCola(struct cola &);
int desencola(struct cola &);

struct nodo{
int nro;
struct nodo * sgte;
};

struct cola{
struct nodo * delante;// apunta al primero
struct nodo * atras;// apunta al ultimo
};

void main(void)
{
int opc;
struct cola q;
int n;
inicializa(q);
do{ cout<<endl<<"******MENU********"<<endl;
cout<<"[1] Ingresa Elementos"<<endl;
cout<<"[2] Retirar Elementos"<<endl;
cout<<"[3] Visualiza cola"<<endl;
cout<<"[4] Vaciar Cola"<<endl;
cout<<"[5] Salir"<<endl;

1
ESTRUCTURA DE DATOS AVANZADOS COLAS

cout<<"Ingrese Opcion";
cin>>opc;
switch(opc)
{
case 1: cout<<"Ingresar Elementos:";
cin>>n;
encola(q,n);
break;
case 2: if(q.delante!=NULL)
{n=desencola(q);
cout<<endl<<"Desencola elementos"<<n<<endl;}
else
cout<<endl<<"No hay elementos en la cola"<<endl;
break;
case 3: cout<<endl<<"Elementos de la cola:"<<endl;
verCola(q);
break;
case 4: vaciaCola(q);
break;
}
}while(opc!=5);
}

//funciones---------------------------
void inicializa(struct cola &q)
{q.delante=NULL;//apunta al primer elemento
q.atras=NULL; //apunta al ultimo elemento
}

INGRESA ELEMENTOS EN LA COLA


void encola(struct cola &q, int n)
{
struct nodo *p;
p=new (struct nodo);
p->nro=n;
p->sgte=NULL;
if(q.delante==NULL)
q.delante=p; //ingresa el primer elemento
else
(q.atras)->sgte=p;// si no apunta a un nuevo nodo
q.atras=p;// la cola apunta al ultimo elemento recientemente ingresado
}

ELIMINA ELEMENTOS EN LA COLA

int desencola(struct cola &q)


{
struct nodo *p;
p=q.delante;// apunta al primer elemento
int n=p->nro;
q.delante=(q.delante)->sgte;
delete(p);
return n;
}

2
ESTRUCTURA DE DATOS AVANZADOS COLAS

BORRA LOS DATOS DE LA COLA


void vaciaCola(struct cola &q)
{
struct nodo *p,*r;
p=q.delante;// apunta al primer elemento
while(p!=NULL)
{
r=p;
p=p->sgte;
delete(r);
}
q.delante=NULL;
q.atras=NULL;

void verCola(struct cola q)


{
struct nodo *p;
p=q.delante;// apunta al primer elementos
while(p!=NULL)
{
cout<<p->nro<<endl;
p=p->sgte;
}

EJERCICIOS PROPUESTOS

Realizar un programa que ingrese elementos en una cola y si los elementos


se repiten los coloque en una siguiente cola y muestre las colas ingresadas y
resultantes.

Realice un programa que ingrese los datos en una cola, luego divida en dos
colas resultantes, teniendo como referencia para dividirlas el valor central de
la cola.

Se tiene una cola de hombre y mujeres con sus nombres, se debe dividir la
colar en dos resultantes, una para hombres y otra para mujeres.

Das könnte Ihnen auch gefallen