Vous êtes sur la page 1sur 17

Recinto Universitario ¨Rubén Darío¨

(RURD)

Facultad de Ciencias e Ingeniería

Carrera: Ingeniería en ciencias de la computación

Docente: MSc. Amparo Herrera García

Año: 1 Matutino

Integrantes:

1. Elliecer Joel Guido Cortez


2. Jorling Víctor Cerda Solís

Informe:
Cola Circulares

Managua, 30 de octubre de 2019


Estructuras de datos lineales: Cola circular y cola doble.

Objetivo:

Revisarás las definiciones, características, procedimientos y ejemplos de las


estructuras lineales Cola circular y Cola doble, con la finalidad de que comprendas
sus estructuras y puedas implementarlas.

Introducción

La cola (queue o cola simple) es una estructura de datos lineal, en la cual el


elemento obtenido a través de la operación ELIMINAR está predefinido y es el que
se encuentra al inicio de la misma.

Una cola simple implementa la política First-In, First-Out (FIFO), esto es, el primer
elemento que se agregó es el primero que se elimina.

La cola simple es una estructura de datos de tamaño fijo y cuyas operaciones se


realizan por ambos extremos; permite INSERTAR elementos al final de la estructura
y permite ELIMINAR elementos por el inicio de la misma. La operación de
INSERTAR también se le llama ENCOLAR y la operación de ELIMINAR también se
le llama DESENCOLAR.

En una cola simple, cuando se eliminan elementos se recorre el apuntador HEAD


al siguiente elemento de la estructura, dejando espacios de memoria vacíos al inicio
de la misma. Existen dos mejoras de la cola simple que utilizan de manera más
eficiente la memoria: la cola circular y la cola doble.
Cola circular

La cola circular es una mejora de la cola simple, debido a que es una estructura de
datos lineal en la cual el siguiente elemento del último es, en realidad. La cola
circular utiliza de manera más eficiente la memoria que una cola simple.

Debido a que una cola circular es una mejora de la cola simple, maneja las mimas
operaciones para INSERTAR (ENCOLAR) y ELIMINAR (DESENCOLAR
Para diseñar un algoritmo que defina el comportamiento de la cola circular es
necesario considerar 3 casos para las operaciones de ENCOLAR y DESENCOLAR:

 Estructura vacía (caso extremo).


 Estructura llena (caso extremo).
 Estructura con elemento(s) (caso base).

En algoritmo de una cola circular para los casos extremos (cuando la estructura está
vacía y cuando la estructura está llena) es el mismo con respecto a la cola simple,
el único algoritmo que hay que volver a diseñar se presenta en el caso base, cuando
la estructura tiene elementos.

Cola circular vacía

Una cola circular nesecita de dos punteros una inicial (Head) y una final (Tail)
posicioón inicial y posición final

En una cola circular vacía no es posible desencolar debido a que la estructura no


posee elementos considerando a la cola como un array solo llevaríamos control de:
 Posición inicial
 Cantidad de datos ingresados
 Tamaño total de la cola
En una cola circular vacía sí se pueden encolar elementos, en este caso las
referencias HEAD y TAIL apuntan al mismo elemento, que es el único en la
estructura.
Cola circular llena

Cuando la referencia a TAIL de una cola llega a su máxima capacidad de


almacenamiento (MAX) se dice que la cola está llena.

En una cola circular llena no es posible encolar más elementos.

En una cola circular llena sí se pueden desencolar elementos, en tal caso se


obtiene el elemento al que hace referencia HEAD y esta referencia se recorre al
siguiente elemento.
Cola circular con elementos

En una cola circular con elementos, cuando se intenta insertar un nuevo elemento
hay que tener en cuenta el número de los elementos dentro de la estructura y no la
referencia TAIL y MAX. Por lo tanto, se debe verificar si el número de elementos
que tiene la estructura es menor al número máximo de elementos definidos, si es
así, existe espacio para alojar el nuevo elemento y el nuevo nodo se puede insertar.

Cada vez que se desee almacenar un nuevo elemento en la estructura se debe


revisar el número de elementos insertados y comparar con el número máximo de
elementos que se pueden almacenar.

La posibilidad de insertar (ENCOLAR) elementos mientras se tenga espacio


disponible hace más eficiente el uso de la memoria, ya que los espacios liberados
cada vez que se DESENCOLA un nodo se pueden volver a utilizar, a diferencia de
la cola simple.
Aplicación

La elección de un elemento dentro de un conjunto de datos es muy común en


diversas aplicaciones, sobre todo en juegos de consola. La selección de un conjunto
de elementos finitos donde a partir del último elemento se puede regresar al primero
utiliza, de manera implícita, una cola circular: selección de un personaje, selección
de un arma, cambios de uniformes, etc.

Figura 1. Cambio de armas en Resident evil.

En general, cuando dentro de una aplicación se puede recorrer un conjunto de


elementos finito e invariable en el tiempo y el sucesor del último elemento es el
primero se tiene una cola circular.
Figura 2. Elegir de uniformes en FIFA.

El objetivo de una cola circular es aprovechar al máximo el espacio del arreglo.

• La idea es insertar elementos en las localidades previamente desocupadas.


• La implementación tradicional considera dejar un espacio entre el frente y la cola.

Si se eliminan componentes quedan espacios disponibles en las primeras posiciones


del arreglo. Cuando se encolan elementos disminuye el espacio para agregar nuevos
elementos en la zona alta del arreglo. Este buffer se puede implementar aplicando
aritmética modular, si el anillo tiene N posiciones, la operación: rear = (rear+1) Mod N,
mantiene el valor de la variable cola entre 0 y N-1.
Algoritmo

Algoritmo de inicialización
F < -- 0
A<-- 0
Algoritmo para insertar
Si (F+1=A) ó (F=1 y A=máximo) entonces
mensaje (overflow)
en caso contrario
inicio
si A=máximo entonces
A<--1
cola[A]<-- valor
en caso contrario
A <--A+1
cola[A]<-- valor
si F=0 entonces
F <-- 1
fin
Algoritmo para extraer
Si F=0 entonces
mensaje (underflow)
en caso contrario
x <-- cola[F]
si F=A entonces
F <-- 0
A<-- 0
en caso contrario
si F=máximo entonces
F

Implementation

using System;

namespace ConsoleApplication1
{
class CircularQueue
{
private int []ele;
private int front;
private int rear;
private int max;
private int count;

public CircularQueue(int size)


{
ele = new int[size];
front = 0 ;
rear = -1;
max = size;
count = 0;
}

public void insert(int item)


{
if (count == max)
{
Console.WriteLine("Queue Overflow");
return;
}
else
{
rear = (rear + 1) % max;
ele[rear] = item;

count++;
}
}

public void delete()


{
if(count == 0)
{
Console.WriteLine("Queue is Empty");
}
else
{
Console.WriteLine("deleted element is: " + ele[front]);

front = (front + 1) % max;

count--;
}
}

public void printQueue()


{
int i = 0;
int j = 0;

if (count==0)
{
Console.WriteLine("Queue is Empty");
return;
}
else
{
for (i = front;j<count;)
{
Console.WriteLine("Item[" + (i + 1) + "]: " + ele[i]);

i = (i+1)%max;
j++;

}
}
}
}

class Program
{
static void Main()
{
CircularQueue Q = new CircularQueue(5);

Q.insert(10);
Q.insert(20);
Q.insert(30);
Q.insert(40);
Q.insert(50);

Console.WriteLine("Items are : ");


Q.printQueue();

Q.delete();
Q.delete();

Q.insert(60);
Q.insert(70);

Console.WriteLine("Items are : ");


Q.printQueue();
}
}
}

Representacion de las colas.

Un elemento se inserta en la cola (parte final) de la lista y se suprime o elimina por la


frente (parte inicial, cabeza) de la lista. Las aplicaciones utilizan una cola para
almacenar elementos en su orden de aparición o concurrencia. Las colas se
representan por listas enlazadas o por arrayas. Se necesitan dos punteros: frente (f)
y final(r), y la lista o arraya de “n” elementos.

Tipos de colas

1. COLA DE PRIORIDAD Una cola de prioridades se utiliza para que los


elementos se atienden en el orden indicado por una prioridad asociada a cada uno.
Si varios elementos tienen la misma prioridad, se atenderán de modo convencional
según la posición que ocupen. Este tipo especial de colas tienen las mismas
operaciones que las colas, pero con la condición de que los elementos se atienden
en orden de prioridad.

2. DOBLE COLA (BICOLA Es un tipo de cola especial que permiten la inserción


y eliminación de elementos de ambos extremos de la cola. Puede representarse a
partir de un vector y dos índices, siendo su representación más frecuente una lista
circular doblemente enlazada. Todas las operaciones de este tipo de datos tienen
coste constante. Existen dos tipos de la doble cola: · Doble cola de entrada
restringida: acepta inserciones solo al final de la cola. · Doble cola de salida
restringida: acepta eliminaciones solo al frente de la cola

3. TIPO COLA IMPLEMENTADO COMO ARREG La figura de arriba, muestra la


forma de implementar una cola, como arreglo, en la que cada casilla, representa una
estructura compuesta por el tipo de dato a guardar (o bien otra estructura).
Implementación

Esta estructura de datos se usa en muchos sistemas operativos, por ejemplo Unix,
para llevar el control de la ejecución de procesos, cada proceso en el sistema es
almacenado en una lista y esta se va recorriendo, dándole un pequeño tiempo del
microprocesador a cada proceso, durante la fracción de segundo de cada proceso
este asume que tiene el control total del procesador.

Conclusión

En conclusión, podemos decir que las colas son un algoritmo fundamental, para el
correcto funcionamiento de un software o programas que las requiera. Los Sistemas
operativos utilizan varias colas diferentes para controlar los procesos dentro de una
computadora. La programación de los procesos que se harán a continuación se basa
normalmente en un algoritmo de colas que intenta ejecutar programas lo más
rápidamente posible y servir a tantos usuarios como pueda. Además, a medida que
tecleamos, a veces las pulsaciones de las teclas se adelantan a los caracteres que
aparecen en la pantalla.
Bibliografía

Introduction to Algorithms. Thomas H. Cormen, Charles E. Leiserson, Ronald


L. Rivest, Clifford Stein, McGraw-Hill.

The Algorithm Design Manual. Steven S. Skiena, Springer.

CAPCOM (2012). CAPCOM: RESIDENT EVIL 6 | Manual web oficial [Figura 1].
Consulta: Enero de 2016. Disponible en:
http://game.capcom.com/manual/bio6/es/page-74.html

SergioGameplayer (2014). FIFA World Cup Brazil 2014 - Juego Completo Menús,
Modos de Juego Equipos Uniformes y mas! [Figura 2]. Consulta: Enero de 2016.
Disponible en: https://www.youtube.com/watch?v=Pyu0Xp7MVJI

https://www.slideshare.net/luisigoodbad/colas-en-programacio

Vous aimerez peut-être aussi