05 tad cola

8
ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS 1 TAD COLA TAD COLA y Particularidades de JAVA Objetivo: Comprender el concepto de abstracción de datos aplicado al TAD PILA

Upload: jorge-ivan-pincay-ponce

Post on 06-Aug-2015

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 05 TAD Cola

ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS

1

TAD COLA

TAD COLA y

Particularidades de JAVA

Objetivo: Comprender el concepto de abstracción de datos aplicado al TAD PILA

Page 2: 05 TAD Cola

ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS

2

TAD COLA

El apartado anterior culminó con la revisión del TAD PILA, ahora otro de los tipos de datos abstractos que veremos es una COLA, similar a una “línea de espera”.

Los sistemas computacionales utilizan muchas colas internamente. Una cola ofrece un comportamiento bien definido a sus clientes: éstos colocan elementos en una cola, uno a la vez, mediante una operación conocida como Encolar, y luego recuperan esos elementos, uno a la vez, mediante una operación conocida como retirar.

Una cola devuelve los elementos en el orden primero en entrar, primero en salir (PEPS o FIFO). Conceptualmente, una cola puede volverse infinitamente larga, pero las colas reales son finitas.

La cola debe ocultar una representación interna de datos y llevar el registro de los elementos que esperan actualmente en la línea, y ofrece operaciones a sus clientes (Encolar y retirar).

A los clientes no les preocupa la implementación de la COLA; simplemente dependen de que ésta opere “como se indicó”. Cuando un cliente encola un elemento, la cola debe aceptarlo y colocarlo en algún tipo de estructura de datos PEPS o FIFO interna. De manera similar, cuando el cliente desea el siguiente elemento de la parte frontal de la cola, ésta debe remover el elemento de su representación interna y entregarlo en orden PEPS o FIFO.

Los clientes pueden realizar solamente las operaciones permitidas en la representación de datos; el ADT rechaza las operaciones que su interfaz pública no proporciona.

Page 3: 05 TAD Cola

ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS

3

Clases autorreferenciadas

Una clase autorreferenciada contiene una variable de instancia que hace referencia a otro objeto del mismo tipo de clase. Por ejemplo, la declaración:

declara la clase Nodo, la cual tiene dos variables de instancia private: la variable String Elemento y la referencia Nodo llamada siguienteElemento. El campo siguienteNodo hace referencia a un objeto de la clase Nodo, un objeto de la misma clase que se está declarando aquí; es por ello que se utiliza el término “clase autorreferenciada”. El campo siguienteElemento es un enlace; “vincula” a un objeto de tipo Nodo con otro objeto del mismo tipo.

Los programas pueden enlazar objetos autorreferenciados entre sí para formar estructuras de datos útiles como listas, colas, pilas e incluso árboles. La siguiente es una representación gráfica de una autoreferenciación.

Page 4: 05 TAD Cola

ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS

4

Java y Asignación dinámica de memoria

Para crear y mantener estructuras dinámicas de datos se requiere la asignación dinámica de memoria; la habilidad para que un programa obtenga más espacio de memoria en tiempo de ejecución, para almacenar nuevos nodos y para liberar el espacio que ya no se necesita. Recuerde que los programas de Java no liberan explícitamente la memoria asignada en forma dinámica. En vez de ello, Java realiza la recolección automática de basura en losobjetos que ya no son referenciados en un programa.

Page 5: 05 TAD Cola

ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS

5

Implementación

Page 6: 05 TAD Cola

ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS

6

Implementación

.

Page 7: 05 TAD Cola

ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS

7

TAD COLA, Algunas aplicaciones

Las colas tienen muchas aplicaciones en los sistemas computacionales:• Una cola es similar a la fi la para pagar en un supermercado: el cajero atiende

primero a la persona que se encuentra hasta adelante. Los demás clientes entran a la fila sólo por su parte final y esperan a que se les atienda.

• La mayoría de las computadoras tienen sólo un procesador, por lo que sólo pueden atender a una aplicación a la vez. Cada aplicación que requiere tiempo del procesador se coloca en una cola. La aplicación al frente de la cola es la siguiente que recibe atención. Cada aplicación avanza gradualmente al frente de la cola, a medida que las aplicaciones al frente reciben atención.

• Las colas también se utilizan para dar soporte al uso de la cola de impresión. Por ejemplo, una sola impresora puede compartirse entre todos los usuarios de la red. Muchos usuarios pueden enviar trabajos a la impresora, incluso cuando ésta ya se encuentre ocupada. Estos trabajos de impresión se colocan en una cola hasta que la impresora esté disponible. Un programa conocido como spooler administra la cola para asegurarse que, a medida que se complete cada trabajo de impresión, se envíe el siguiente trabajo a la impresora.

• En las redes computacionales, los paquetes de información también esperan en colas. Cada vez que un paquete llega a un nodo de la red, debe enrutarse hacia el siguiente nodo en la red a través de la ruta hacia el destino final del paquete. El nodo enrutador envía un paquete a la vez, por lo que los paquetes adicionales se ponen en una cola hasta que el enrutador pueda enviarlos.

• Un servidor de archivos en una red computacional se encarga de las peticiones de acceso a los archivos de muchos clientes distribuidos en la red. Los servidores tienen una capacidad limitada para dar servicio a las peticiones de los clientes. Cuando se excede esa capacidad, las peticiones de los clientes esperan en colas.

Page 8: 05 TAD Cola

ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS - ESTRUCTURAS DE DATOS

8

A modo de resumen, recordando Pilas y Colas

• Las pilas son importantes en los compiladores y sistemas operativos; pueden insertarse y eliminarse elementos sólo en un extremo de una pila: su parte superior.

• Las colas representan líneas de espera; se insertan elementos en la parte final (conocida como cola) de una cola y se eliminan elementos de su parte inicial (conocida como cabeza).