Colas en C++

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;

Rodrigo Paszniuk
Rodrigo Paszniuk

Ingeniero Informático y Especialista en Docencia Universitaria con 15 años de trayectoria en la industria de software. Mi enfoque está en la arquitectura de sistemas y la formación de talento técnico en Paraguay. A través de Programacion.py, busco compartir conocimiento práctico y elevar el estándar del código en nuestra región.

Artículos: 322

6 comentarios

Deja un comentario