Colas

8.
C
O
L
A
C
I
R
C
U
L
A
R
Y
O
P
E
R
A
C
I
O
N
E
S

## Introducción.

En el presente trabajo se muestra una investigación acerca de las colas, colas circulares y operaciones con colas en estructuras de datos, realizada por el equipo para dar a conocer y poder explicar el uso de las colas circulares, a través de ejemplos y definiciones.
Se busca aclarar las diferencias entre colas y colas circulares, acompañadas de imágenes que ejemplifican el funcionamiento de ambas estructuras. Así como definir sus operaciones básicas, ejemplificando el algoritmo que se utiliza en cada operación. Y a través de un ejercicio de programación en NetBeans Java; Dejar clara la forma en que funciona una cola circular y demostrar la eficiencia de su aplicación en comparación con una cola simple.

## Resumen.

Una cola constituye una estructura lineal de datos en la que los nuevos elementos se introducen por un extremo y los ya existentes se eliminan por el frente.
Los nodos de una cola se eliminan sólo de la cabeza de la cola, y se insertan sólo en los talones de ella. Por esta razón, a una cola se le conoce como una estructura de datos primera en entrar, primera en salir (PEPS), por sus siglas en inglés FIFO (First In, First Out).

### Las operaciones básicas que se pueden realizar son:

- Insertar un elemento en la cola
- Eliminar un elemento de la cola
  Una cola circular constituye una estructura de datos lineal en la cual el siguiente elemento del último en realidad es el primero.
  De esta forma se utiliza de forma más eficiente la memoria debido a que puede ser reutilizada.

  ## DESARROLLO

  Una cola constituye una estructura lineal de datos en la que los nuevos elementos se introducen por un extremo y los ya existentes se eliminan por el frente.
  Los nodos de una cola se eliminan sólo de la cabeza de la cola, y se insertan sólo en los talones de ella. Por esta razón, a una cola se le conoce como una estructura de datos primera en entrar, primera en salir (PEPS), por sus siglas en inglés FIFO (First In, First Out). Las operaciones de insertar y eliminar se conocen como agregar en la cola y retirar de la cola.

  ## OPERACIONES CON COLAS

  La definición de la estructura de datos tipo cola queda completa al incluir las operaciones que se pueden realizar en ella. Las operaciones básicas que se pueden realizar son:
- Insertar un elemento en la cola
  1 si (final 2 {
  2 final = final + 1;
  3 cola [final]=dato;
  4 si (final = 1)
  5 {
  6 frente = 1;
  7 }
  5 si no {
  6 Escribir “Cola llena”
  7 }
  8 }
- Eliminar un elemento de la cola
  1 si (frente != 0) { //Verifica que la cola no está vacía
  2 dato = cola[frente];
  3 si (frente = final) { //Hay un solo elemento
  4 frente = 0;
  5 final = 0; 6 }
  7 si no {
  8 frente = frente + 1;
  9 } }
  10 si no {
  11 Escribir “Cola vacía”
  12 }
  Es posible realizar algoritmos auxiliares para determinar si una cola esta vacía o está llena.

  ### Cola_Vacia(cola, frente, estado)

  1 si (frente = 0){
  2 estado = verdadero; //La cola está vacía
  3 }
  4 si no {
  5 estado = falso;
  6 }

  ### Cola_Llena(cola, final, max, estado)

  1 si (final = max) {
  2 estado = verdadero; //La cola está llena
  3 }
  4 si no {
  5 estado = falso;
  6 }
  Las inserciones se llevarían a cabo por el Final de la cola, mientras que las eliminaciones se harán por el Frente.

  ## COLAS CIRCULARES

  Una cola circular o anillo es una estructura de datos en la que los elementos están de forma circular y cada elemento tiene un sucesor y un predecesor. Los elementos pueden consultarse, añadirse y eliminarse únicamente desde la cabeza del anillo que es una posición distinguida.
  Una cola circular constituye una estructura de datos lineal en la cual el siguiente elemento del último en realidad es el primero. De esta forma se utiliza de forma más eficiente la memoria debido a que puede ser reutilizada. Para solucionar el problema de desperdicio de memoria se implementaron las colas circulares, en las cuales existe un apuntador desde el último elemento al primero de la cola.
  Las colas tienen muchas aplicaciones en sistemas de cómputo. Muchas computadoras sólo tienen un procesador, por lo que sólo es posible atender a un usuario a la vez. Las entradas de los demás usuarios se colocan en una cola. Cada entrada avanza gradualmente desde el frente de la cola, conforme los usuarios reciben servicio. La entrada del frente de la cola es la siguiente en recibir servicio.
  Las colas también se utilizan para apoyar las colas de impresión. Un ambiente multiusuario puede tener una única impresora, y muchos usuarios podrían estar generando resultados para impresión. Si la impresora está ocupada, es posible que otras salidas se estén generando, las cuales se envían a disco, donde esperan en una cola hasta que la impresora esté disponible.
  Los paquetes de información también esperan en colas correspondientes a redes de computadoras. Cada vez que llega un paquete a un nodo de la red, éste debe rutearse al siguiente nodo de la red, a través de la ruta hacia el destino final del paquete. El nodo ruteador envía un paquete a la vez, por lo que los demás paquetes se colocan en la cola hasta que el ruteador los llame.

  ## CONCLUSIÓN

  Las colas circulares son una forma más eficiente de manejar datos al utilizar colas, ya que nos permite hacer uso completo de la memoria que tengas asignada reutilizando a medida que los datos se van eliminando e ingresamos nuevos.
  Los tipos de colas tienen distintas aplicaciones y el tipo de cola que se aplique dependerá del uso que se requiera en cada programa y la función que este realizara.

  ## REFERENCIAS BIBLIOGRAFICAS

- Cairó, G. (2006). Estructuras de datos. En G. Cairó, Estructuras de datos. México: McGraw Hill.
- Deitel. (2004). Como programar en C, C++ y Java. México: Pearson.
- http://marycruz-estructuradedatos.blogspot.mx/2010/11/colas-dobles-y-circulares_04.html

  ## COMPLEMENTOS

  Estructura de Datos-Colas Circulares

  ## EJERCICIOS

  1. ¿Qué es una Cola Circular?
  2. ¿Qué es una Cola Lineal o Simple?
  3. ¿Cuáles son las Operaciones en las Colas?
  4. ¿Qué diferencia hay entre una Cola Lineal o Simple de una Cola Circular?
  5. ¿Cuál resulta más eficaz al momento de implementarlo? 6. ¿Cuáles son las Aplicaciones de las Colas?