ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Estructura De Datos Colas


Enviado por   •  15 de Julio de 2012  •  1.976 Palabras (8 Páginas)  •  966 Visitas

Página 1 de 8

Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir.

Las colas se utilizan en sistemas informáticos, transportes y operaciones de investigación (entre otros), dónde los objetos, personas o eventos son tomados como datos que se almacenan y se guardan mediante colas para su posterior procesamiento. Este tipo de estructura de datos abstracta se implementa en lenguajes orientados a objetos mediante clases, en forma de listas enlazadas.

Estructura de las colas

De manera similar a las pilas, las colas definen una estructura no estándar, de manera que se debe crear un nuevo tipo de dado, el tipo cola, que debe tener los siguientes elementos:

 Un arreglo de elementos de algún tipo específico, puede incluso ser un tipo estándar o no.

 Un número que indica el elemento que está en la posición del frente de la cola.

 Un número que indica el elemento que está en la posición trasera de la cola.

Tipos de colas

o Colas circulares (anillos): en las que el último elemento y el primero están unidos.

• Colas de prioridad: En ellas, los elementos se atienden en el orden indicado por una prioridad asociada a cada uno. Si varios elementos tienen la misma prioridad, se atenderán de modo convencional según la posición que ocupen. Hay 2 formas de implementación:

Añadir un campo a cada nodo con su prioridad. Resulta conveniente mantener la cola ordenada por orden de prioridad.

Crear tantas colas como prioridades haya, y almacenar cada elemento en su cola.

o Bicolas: son colas en donde los nodos se pueden añadir y quitar por ambos extremos; se les llama DEQUE (Double Ended QUEue). Para representar las bicolas lo podemos hacer con un array circular con Inicio y Fin que apunten a cada uno de los extremos. Hay variantes:

• Bicolas de entrada restringida: Son aquellas donde la inserción sólo se hace por el final, aunque podemos eliminar al inicio ó al final.

o Bicolas de salida restringida: Son aquellas donde sólo se elimina por el final, aunque se puede insertar al inicio y al final.

• Representación de una Cola, mediante un array.

100 264 119 48

frente final

• Representación de una Cola mediante una lista enlazada

1 2 3 4

100 264 119 48

frente final

Aplicaciones de las Colas:

Las Colas también se utilizan en muchas maneras en los sistemas operativos para planificar el uso de los distintos recursos de la computadora. Uno de estos recursos es la propia CPU (Unidad Central de Procesamiento).

Si esta trabajando en una sistema multiusuario, cuando le dice a la computadora que ejecute un programa concreto, el sistema operativo añade su petición a su "cola de trabajo".

Cuando su petición llega al frente de la cola, el programa solicitado pasa a ejecutarse. Igualmente, las colas se utilizan para asignar tiempo a los distintos usuarios de los dispositivos de entrada/salida (E/S), impresoras, discos, cintas y demás. El sistema operativo mantiene colas para peticiones de imprimir, leer o escribir en cada uno de estos dispositivos.

Doble Cola

Esta estructura es una cola bidimensional en que las inserciones y eliminaciones se pueden realizar en cualquiera de los dos extremos de la bicola.

Existen dos variantes de la doble cola:

• Doble cola de entrada restringida.

• Doble cola de salida restringida.

La primer variante sólo acepta inserciones al final de la cola, y la segunda

acepta eliminaciones sólo al frente de la cola

EJEMPLO

private List<Tipo> cola;

public Cola(){

cola=new ArrayList<Tipo>();

}

public boolean colaVacia(){

return cola.isEmpty();

}

public void agregar(Tipo elemento){

cola.add(elemento);

}

public Tipo sacar(){

if(colaVacia())return null;

Tipo elemento=cola.get(0);

cola.remove(0);

return elemento;

}

#ifndef _CoLaDobLe_

#define _CoLaDobLe_

class ColaDoble

{

public:

struct TAnillo{ //Esta estructura se puede modificar según la conveniencia del progrador k la use

unsigned int x, y; //sin necesidad de modificar el .cpp

}; //Si no se quiere usar una estructura se debera hacer un typedef TAnillo

enum TExtremo {frente, final};

ColaDoble(); //Constructor se llama automaticamente

~ColaDoble(); //Destructor se llama automaticamente

bool EstaVacia() const; //Devuelve true si esta vacia la cola

void Encolar(TAnillo &a, TExtremo ext);//Añade un elemento por el extremo apuntado por ext

void Desencolar(TExtremo ext); //Quita un elemento por el extremo apuntado por ext

void Valor(TAnillo &a, TExtremo ext); //Devuelve el valor del extremo apuntado por ext, NO ELIMINA NADA DE LA COLA //para eleminar y consultar el siguiente se devera usar Desencolar()

private:

struct NodoCD

{

...

Descargar como (para miembros actualizados) txt (9 Kb)
Leer 7 páginas más »
Disponible sólo en Clubensayos.com