Colas en C++

| 2013-04-27 | 6 Comentarios »

Colas

Definición: ¿Qué es una Cola?

El diccionario de la Real Academia Española define una acepción de cola como “hilera de personas que esperan turno para alguna cosa”; una hilera de vehículos esperando pasar una frontera, una hilera de personas para entrar en un teatro, o una cola de trabajos en un sistema de computadora que espera la disponibilidad de algún dispositivo de salida tal como una impresora.

En cada uno de estos ejemplos, los elementos se atienden en el orden en que llegaron; es decir, el primer elemento en entrar (primero de la cola) es el primero en ser atendido (salir). La cola es una estructura FIFO (First In First Out)

 

Ejemplos de colas en Computación

  • Cola en el Spooler de Impresión.
  • Cola en la espera de instrucciones a seguir.
  • Cola en la recepción de datos.
  • Etc.

 

Evolución de la Cola

c1

c2

 

Operaciones Básicas de la Cola

  • Inicializar la cola.
  • Añadir un elemento al final de la cola.
  • Eliminar el primer elemento de la cola.
  • Vaciar la cola.
  • Verificar el estado de la cola: Vacía / Llena.

 

Implementación de las funciones con Punteros

//Declaraciones generales

Estructura tipo_nombre

…………..

…………..

tipo_nombre siguiente

Fin de estructura

tipo_nombre à primero, aux, ultimo

tipo cantidad à tope

 

función inicializar

primero = nulo

ultimo = nulo

fin función

 

lógica función vacía

si ultimo = nulo

devolver (verdadero)

si no

                        devolver (falso)

fin función

 

lógica función llena

si primero = tope

devolver (verdadero)

si no

                        devolver (falso)

fin función

 

función eliminar

dato = primero.dato

aux = primero

primero = aux.siguiente

liberar(aux)

fin función

 

función añadir

reservar (aux)

aux.dato = dato

ultimo.siguiente = aux

ultimo = aux

fin función

 

Ejemplo de Cola:


 

#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

struct datos {
 int dato;
 datos *s;
 }*p,*aux,*u;

void insertar (int dat);
void borrar ();
void listar ();

main()
{
int opc,y;
do
{
cout<<"\n1. Insertar";
cout<<"\t2. Borrar";
cout<<"\t3. Listar";
cout<<"\t4. Salir";
cout<<"\n Ingrese opcion: ";cin>>opc;
switch(opc)
{
case 1: cout<<"Ingrese dato: ";
 cin>>y;
 insertar(y);
 cout<<"\nDato insertado!!";
 break;
case 2: borrar();
 break;
case 3: listar(); break;
case 4: exit(1);
default: cout<<"\n Opcion no valida!!"; break;
}
}while(opc);
}

void insertar (int dat)
{
aux=new(datos);
aux->dato=dat;
if(u)
{
u->s=aux;
aux->s=NULL;
u=aux;
}
else
{
p=u=aux;
}
}
void borrar()
{
if(p)
{
aux=p;
cout<<"\nElimino a " <<p->dato;
p=aux->s;
delete(aux);
}
else
{
cout<<"\n No hay datos";
}
}

void listar()
{
int i;
if(!u)
{
cout<<"\n No hay datos en la cola";
return;
}
aux=p;
while(aux)
{
cout<<"\n"<<++i<<" - "<<aux->dato;
aux=aux->s;
}
}

&nbsp;

Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.




SEGUÍNOS EN FACEBOOK


GITHUB