![]() |
![]() |
|||||
![]() |
Articulos
|
![]() |
||||
![]() |
![]() |
|||||
![]() |
![]() |
Delphi Mania >> Articulos >> Colas |
|
Colas
Las Colas son estructuras que se conocen también como Listas tipo FIFO (esta sigla proviene del inglés: First In, First Out), y quiere decir que el primer elemento que sea insertado será el próximo en salir en el momento de suprimir un elemento de la cola. Este tipo de estructura son utilizadas para resolver numerosos problemas del mundo real. Un ejemplo muy simple es si se quiere modelizar una fila de personas que está esperando para ser atendidas en cualquier negocio o está por entrar a un cine, un estadio, etc. En estos casos siempre aquella persona que haya llegado primero será la primera en ser atendida o en entrar ("siempre existen aquellos que se adelantan, pero por ahora no los tenemos en cuenta"). Como los lenguajes por lo general no poseen este tipo de dato, debe ser por consiguiente el programador quien los implemente utilizando alguna de las estructuras más simples que le provee el lenguaje para definir sus propios tipos. Si estamos en Delphi lo podemos hacer de diferentes formas dependiendo de la metodología de programación que estemos utilizando. Lo más recomendable es hacerlo mediante un TAD ya que de esta manera nos estaremos abstrayendo de la estructura interna que utilizamos para almacenar los elementos de la cola y solo nos importará que hacen las operaciones que nos provee el tipo. Las pricipales operaciones que deben poder efectuarse sobre una cola son las que permite crear o inicializar una pila, otras para insertar y eliminar elementos, y en algunos casos debe existir también alguna que nos permita destruir la cola. Hay otras operaciones que no modifican la cola, sino que sólo devuelven información a cerca del estado de la misma. Cuando intentemos resolver el problema de como almacenar los elementos dentro de la cola nos encontraremos ante una disyuntiva entre diferentes formas de realización, las más utilizadas son las basadas en arreglos y aquellas que utilizan enlaces entre los elementos. Implementación de Colas con arreglos: Con este modelo de realización, se dice que es implementada con arreglos porque se utiliza un vector para almacenar los elementos de la cola. Junto con esta estructura donde almacenaremos los elementos deberémos también registrar otra información para el control de la cola, como puede ser la cantidad de elementos de la cola y el número máximo de elementos que podrá contener la cola. Como ya dijimos anteriormente una buena metodología de implemetación de una cola es mediante un TAD, para esto debemos crear una unidad dentro de nuestro proyecto en Delphi y dentro de esta vamos a declarar lo siguiente:
Este modelo no utiliza una gran estructura interna para contener todos los elementos sino que cada elemento conoce cual es el elemento que le sigue mediante un enlace, puntero, entre elementos. De esta manera nos quedará una cadena de elementos que podrá ir creciendo o disminuyendo su longitud a medida que vayamos insertando o eleminando elementos de ella en nuestros programas. Para poder realizar esta implementación de una cola vamos a tener que definir una clase que contenga punteros al primer y último elemento de la cadena de elementos y además una variable para poder registrar el número de elementos de la cola, aunque esta última variable podría no ser necesaria y podríamos igualmente recorrer la cadena de elementos para calcular este valor,si se hace uso de esta variable, haremos que algunas operaciones sobre la cola sean mucho más eficientes en cuanto al tiempo de ejecución. El encabezado de la unidad donde definamos la clase cola, con el modelo de realización basado en punteros, quedará de la siguiente manera:
Si definimos asi la clase cola, no vamos a poder tener acceso a la estructura interna de la cola, solamente vamos a poder acceder a la cola mediante los métodos que hemos definido para el manejo de la cola. Si en algún momento cambiamos el modelo de realización de la estructura interna de la cola, en los programas que hayamos hecho uso de esta clase no tendremos que cambiar nada pues el funcionamiento no va a cambiar y como solo hemos hecho uso de las operaciones provistas y no hemos manipulado la estructura interna entonces nuestro programa no sufrirá ningún problema. Si
analizamos ambos modelos de realización, arreglos vs. punteros,
podemos notar ciertas ventajas en cada uno de los modelos que se deben
tener en cuenta antes de la realización de la clase y que puede
afectarnos nuestros programas. El modelo basado en arreglos tiene un número
máximo de elementos para la cola mientras que el modelo realizado
con punteros puede variar su tamaño sin inconvenientes. Esto lo
podemos enmendar poniendo un número suficientemente grande en el
tamaño del arreglo, pero si luego solo necesitamos una pequeña
cola de elementos, entonces estaremos desperdiciando memoria. Diferentes Tipos de Colas: Existen diferentes modelos de Colas dependiendo de como se inserten o eliminen los elementos, estos sirven para modelizar casos muy puntuales, por ejemplo se pueden nombrar: - Colas Circulares: es una cola simple, con la única diferencia
que si recorremos la cola, entonces el último elemento de la cola
tiene un elemento siguiente, que es el primer elemento. - Colas Dobles: los elementos a diferencia de una cola simple pueden ser insertados y eliminados por ambos extremos de la estructura. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
|||||
![]() |
![]() |
![]() |
||||
![]() |
![]() |
|||||
Las marcas que aparecen en
esta pagina pertenecen a sus respectivas empresas
|
||||||
Todos los derechos reservados
- Copyrigth 2001
|
![]() |