You are on page 1of 15

Algortmica y Estructura de Datos II

COLAS

Su nombre se deriva de la metfora de una cola de personas en una taquilla. La insercin y extraccin de elementos de la cola siguen el principio FIFO (first-in-first-out). El elemento con ms tiempo en la cola es el que puede ser extrado.

COLAS
Entra

Sale

Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operacin de insercin push se realiza por un extremo y la operacin de extraccin pop por el otro. Tambin se le llama estructura FIFO (del ingls First In First Out), debido a que el primer elemento en entrar ser tambin el primero en salir.

Las colas se utilizan en sistemas informticos, transportes y operaciones de investigacin (entre otros), dnde 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.

Operaciones Bsicas A todos los efectos, colas son como las listas lineales en cuanto a las operaciones que se pueden realizar sobre ellas: Crear: se crea la cola vaca. Agregar (Encolar, aadir, entrar, push): se aade un elemento a la cola. Se aade al final de esta. Avanzar (Desencolar sacar, salir, pop, eliminar): se elimina el elemento frontal de la cola, es decir, el primer elemento que entr. Primero (Frente, consultar, front): se devuelve el elemento frontal de la cola, es decir, el primero elemento que entr.

Como se ha definido la COLA como una lista enlazada especial, para su implementacin se har uso de la clase Nodo y la clase Lista. Crearemos una nueva clase llamada cCola la cual hereda datos de la clase Lista, y slo habra que implementar los mtodos propios del manejo de colas.

Visin del conceptor : Diseo del TAD cNodo Nombre de la Clase : cNodo Descripcin genrica Un nodo es un registro que contiene un dato de inters y al menos un puntero para referenciar (apuntar) a otro nodo. .

Descripcin Formal Nombre : cNodo Elementos : aDato : Objeto

aSiguiente:cNodo

Donde objeto es una clase que representa cualquier cosa del mundo real

Visin del conceptor : Diseo del TAD cLista

Nombre de la Clase : cLista Descripcin genrica Una lista puede definirse como una n-tupla dinmica ordenada. L=(e1, e2,e3..en) Descripcin Formal Nombre : cLista Elementos aPrimerNodo: cNodo
cLista -aPrimerNodo cLista() PrimerNodo EsVacia() InsertarFinal() EliminarInicio() Longitud() AccesoDato()

Donde cNodo es una clase del tipo Nodo

Visin del conceptor : Diseo del TAD cCola Nombre de la Clase : cCola hereda de CLista Descripcin genrica
Una cola es una estructura de datos de acceso restrictivo a sus elementos. El primer elemento que se incorpor a la

estructura, ser el primero que salga en una operacin de extraccin (desapareciendo ya de ella, y pasando su sucesor a ser el primero en espera), y el nico que se puede consultar en un momento dado.
cCola

Descripcin Formal Nombre : cCola Elementos

cCola() CVacia() Agregar() Avanzar() Primero() Longitud()

Nombre de la Clase : cCola


[publico] clase cCola cLista Inicio
// elementos ninguno // Operaciones Primitivas

// Constructor: construye una cola vaca [publico] cCola() Inicio

Fin

// Operaciones Derivadas

[publico] CVacia(): booleno


//operacin que nos permite saber si la cola esta vaca

Inicio

devolver EsVacia()// mtodo definido en clase cLista


fin
[publico] Agregar(dato:Objeto)
//operacin que nos permite insertar 1 elemento al final de la cola

Inicio InsertarFinal(dato)// mtodo definido en clase fin


cLista

// Operaciones Derivadas [publico] Avanzar()


//operacin que nos permite eliminar 1 elemento al principio de la cola

Inicio EliminarInicio()// mtodo definido en clase cLista Fin [publico] Primero(): Objeto
//operacin que nos permite mostrar el primer elemento de la cola

Inicio Si CVacia==verdadero return nulo Caso Contrario return AccesoDato(1) fin

[publico] CLongitud(): entero


//operacin que nos permite saber el tamao de la cola

Inicio

retornar longitud()// mtodo definido en clase


cLista

Fin * OJO: Este mtodo NO debera existir.

Ejercicio en clase
Realizar un programa que pida el ingreso de n elementos, los guarde en una pila y que nicamente pase los elementos pares a una cola.