You are on page 1of 26

UNIVERSIDAD NACIONAL AUTONOMA DE

MXICO
FACULTAD DE ESTUDIOS SUPERIORES
CUAUTITLN
LICENCIATURA EN INFORMTICA

ESTRUCUTRA DE DATOS
COLAS

Eduardo Alfredo Solano Vargas


Osiris Aldahir Gutirrez Cervantes
Dorothy Anaisa Andrade Sobrevilla
Gema Fernanda Gonzlez Guerra
Freddy Valdez Martnez
Informtica II, Organizacin de Archivos
y Estructura de Datos

Estructura de datos
Los datos son nmeros, letras o smbolos que describen objetos.
Una estructura de datos es, a grandes rasgo , una coleccin de
datos(normalmente de tipo simple) que se caracterizan por su organizacin y
las operaciones que se definen en ellos

Clasificacin de las Estructuras de


Datos.
Son aquellas en las que
el tamao ocupado en memoria se define con
anterioridad a la ejecucin del programa que los usa
de forma que su dimensin no puede modificarse

LINEALES

No tienen tericamente limitaciones de tamao,


Salvo la nica restriccin de la memoria disponible
En el computador

NO LINEALES

COLAS

Qu son las Colas?


Es una lista lineal de elementos en la que
las operaciones de insertar y eliminar se realizan en diferentes extremos de la
cola.
Es 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.

Trabaja con la filosofa

FIFO
(FIRST IN, FIST OUT)
EL PRIMERO EN ENTRAR, ES EL PRIMERO EN SALIR

Utilizacin
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

Insertar:
Almacena al fin de la cola el elemento que se recibe
como parmetro.
Cola Vaca
Insertar A

Inserta B

Inserta c

Eliminar

Saca de la cola el elemento que se


encuentra al frente
Eliminar
elemento

Eliminar
elemento

Vaca
Regresa un valor booleano indicando si la cola tiene o
no elementos (True- si la condicin esta vaca, False
si la cola tiene al menos un elementos.

True

False

Llena
Regresa un valor booleano indicando si la cola tiene
espacio disponible para insertar nuevos
elementos(True-si esta llena y false si existen espacios
disponibles.

False

True

Las colas pueden ser


representadas
en
arreglos
de
una
dimensin (vector)
manteniendo
dos
variables
que
indiquen el Frente y
Final
de
los
elementos

Implementacin
de Colas.

A
Frente

Final

QUE NO SE TE PASE!
Cuando la cola este vaca las variables frente y final son nulos y no
es posible remover elementos
Cuando la cola esta llena (Frente = 0 y Final = n-1)no es posible
insertar elementos nuevos a la cola.

Frente Movible
El Frente Movible es usado en las colas circulares, en donde a diferencia
del Frente Fijo. Este mueve el apuntador Frente a la variable que tenga a
la derecha.

A
Frente

C
Final

Frente Fijo

A
Frente

C
Final

Frente Movible

Implementacin de
Colas en JAVA

Definiciones de
Colas

En Java podemos encontrar variadas formas de crear Colas en


pocas lneas de cdigo, un ejemplo es una de sus Interfaces
que tiene como nombre Queue con la cual podemos crear
Colas y que contiene mtodos o funciones que nos ayudaran a
realizar
las operaciones
bsicas
de necesitan
las mismas.
Para utiliza
r este mtodo
las colas
trabajar con
listas enlazadas .
Las cuales nos permitirn agregar registros de cualquier
tamao a las cola.

Sintaxis de la definicin de
una cola
1 import java.util.LinkedList;
2 import java.util.Queue;
3
4 public class colas {
5 public static void main(string[ ]
args){
6 Queue<Interger>cola new
linkedList();
7
8
CODIGO
9
10
}
11 }

En la lnea uno de nuestro cdigo, se hace el llamado a una


lista enlazada que como se haba dicho antes esta nos dar
ese espacio para los registros
1. import java.util.LinckdList;

Lnea dos de nuestro cdigo esta el llamado a QUEUE que si comparam


nguaje C o C++ podra ser nuestra librera pues este contiene las
iones necesarias para borrar, ingresar, leer entre otras mas a las colas
2. Import java.util.Queue;
En la lnea 4 se esta declarando un clase de tipo publica con el
nombre colas, Quien contendr a nuestro cdigo y a nuestra funcin
principal.
4. public class colas {

En la lnea 5 de esta declarando una funcin principal o un


mtodo de la clase main.
En donde se llevaran acabo las principales instrucciones del
cdigo.
5 public static void main(string[ ]args){
En la lnea numero 6 del cdigo se esta llamando a la Librera
Queue y se esta declarando una variable llamada cola con una
nueva lista enlazada.
6

Queue<Interger>cola= new linkedList();

En la lnea 8 del cdigo ira lo que son las funciones o mtodos de


las colas que
posteriormente se explicaran.
Y en la lnea 10 y 11 se encuentra el cierra de la clases o de las
lneas 4 y 5.

Definicin de un cola con la clase CListaCircularSE


Para trabajar con colas podemos disear una clase Ccola<T> la cual usara los
mtodos de la clase CListaCircularSE que son:
meterEncola: Mete un elemento al final de la cola, Tiene un parmetro que es una
Referencia de tipo T al objeto a aadir. No devuelve ningn valor.
SacarDecola: Saca el primer valor de la cola, eliminndolo de la misma. No tiene
parmetros
Devuelve una referencia al objeto sacado de la cola o null si la cola esta vaca.

Referencia: Una referencia dirige su atencin aun objeto de un tipo especifico


es como un alias, no creas objetos solo haces referencia al que ya esta creado.

public class Ccola<T>extends CListaCircularSE


{
public Ccola ( ) { }
public void meterEncola (T obj)
{
aadirAlFinal (obj);
}
public T sacarDecola( )
{
return (T)borrar ( );
}
}
El constructor de la clase Ccola<T> llama primero al constructor de la clase base
Que crea una lista con cero elementos.
Para meter el elemento referenciado por el parmetro obj en la cola, el mtodo
meterEncola
Invoca al metodo aadirAlFinal de la clase base.; y para sacar de la cola y eliminarlo
de
La misma, el metodo sacarDecola invoca al mtodo borrar de l clase base.

Operaciones bsicas que se encuentran en QUEUE


Para Insertar:
add(e)
offer(e)
Para Extraer:
remove()
poll()
Para Consultar el Frente:
element()
peek()
Como podemos darnos cuenta, hay 2 mtodos para cada
operacin, estos realizan de igual forma las operaciones, pero en
cierto caso 1 de ellos retornar un valor especial null y el otro
lanzar una excepcin.
Por ejemplo, los mtodos para Extraer llamados: remove() y
poll(). Cuando se intenta extraer un dato de una Cola que ya
est vaca el mtodo remove() lanzar una excepcin como
resultado, en cambio el mtodo poll() simplemente retornar o
tomar el valor null.

Enseguida se muestra un programa ejemplo de la utilizacin de


la interfaz Queue para crear una Cola y los mtodos
previamente mencionados:
1 import java.util.LinkedList;
2 import java.util.Queue;
3
4 public class colas {
5public static void main(String[] args) {
6/*Creamos la Cola Indicando el tipo de dato*/
7Queue<Integer> cola=new LinkedList();
8/*Insertamos datos*/
9cola.offer(3);
10cola.add(14);
11cola.offer(12);
12cola.add(7);
13cola.offer(10);
14/*Impresion de la Cola llena con los datos*/
15System.out.println("Cola llena: " + cola);
16/*Estructura repetitiva para desencolar*/
17while(cola.poll()!=null){//Desencolamos y el valor se compara
con null
18System.out.println(cola.peek());//Muestra el nuevo Frente
19}
20/*Muestra null debido a que la cola ya esta vacia*/
21System.out.println(cola.peek());

Si en el programa mostrado, hacemos un cambio como el


siguiente:
1 while(cola.remove()!=null){
2System.out.println(cola.peek());
3 }
Nos toparemos con un error cuando se desencole el ltimo
elemento, puesto que la excepcin que lanza en ese caso el
mtodo remove() no est siendo considerado.
Al igual al modificar el ltimo mtodo utilizado en el ejemplo:
1 System.out.println(cola.element());
Ya que, est siendo utilizado cuando la cola se encuentra vaca,
al igual que el mtodo remove() nos lanzar una excepcin que
no est siendo tratada en el ejemplo.

Creando la cola con la interfaz Queue nos limitamos a tener


elementos de 1 solo tipo de dato, en cambio, podemos crearla
con la clase llamada LinkedList, en ella podemos utilizar los
mismos mtodos que crendola con la interfaz Queue y a
parte podemos insertar elementos de diferentes tipos de datos
en la misma Cola:

1 import java.util.LinkedList;
2
3 public class colas {
4public static void main(String[] args) {
5LinkedList cola=new LinkedList();//Usamos LinkedList
6cola.offer(3);
7cola.add(14);
8cola.offer(12);
9cola.add(7);
10cola.offer(10);
11cola.add(10.5);
12cola.add("cadena");
13
14System.out.println("Cola llena: " + cola);
15
16while(cola.poll()!=null){
17System.out.println(cola.peek());
Nota:Se puede observar que el
18}
programa es muy similar al
18System.out.println(cola.peek()); primer ejemplo sin embargo
20}
en este estamos creando la
21 }
Cola desde la clase Linked List
y le estamos encolando
elementos de distintos tipos de

Fuentes de Informacin.
http://robotica.uv.es/pub/Libro/PDFs/CAPI5.pdf
http://es.slideshare.net/nieves1988/estructura-datos-pilas-y-colas
http://michelletorres.mx/colas/#.VSnfXPmUeAU
http://es.slideshare.net/nieves1988/estructura-datos-pilas-y-colas