Colas
Las colas son secuencias de elementos caracterizadas porque las operaciones de inserción y borrado se realizan sobre extremos opuestos de la secuencia. La inserción se produce en el "final" de la secuencia, mientras que el borrado se realiza en el otro extremo, el "inicio" de la secuencia. Las restricciones definidas para una cola hacen que el primer elemento que se inserta en ella sea, igualmente, el primero en ser extraido de la estructura. Si una serie de elementos A, B, C, D, E se insertan en una cola en ese mismo orden, entonces los elementos irán saliendo de la cola en el ordenen que entraron. Por esa razón, en ocasiones, las colas se conocen con el nombre de listas o secuencias FIFO (First In First Out, el primero que entra es el primero que sale).
Operaciones basicas
Insertar.- Almacena al final de la cola el elemento que se recibe como paramétro.
Eliminar.- Saca de la cola el elemento que se encuentra al frente.Vacía.- Regresa un valor booleano indicando si la cola tiene o no elementos (true – si la cola esta vacia, false – si la cola tiene al menos un elemento).
Cola estatica
Una cola estatica esta hecha con un arreglo ypor lo tanto el tamaño de la cola sera el tamaño del arreglo.
Aqui el codigo en C#:
class Cola
{
object[] cola;
int frente;
int posterior;
public Cola(int tamano)
{
posterior = 0;
cola = new object[tamano];
for (int i = 0; i < tamano; i++)
{
cola[i] = null;
}
}
public int incremento(int i, int tamano)
{
return (i + 1) % tamano;
}
public bool llena()
{
if (incremento(posterior, cola.Length) == frente)
{
return true;
}
else
{
return false;
}
}
public bool vacia()
{
if (posterior == frente)
{
return true;
}
else
{
return false;
}
}
public void push(object x)
{
if (!llena())
{
cola[posterior] = x;
posterior = incremento(posterior, cola.Length);
}
}
public object top()
{
if (!vacia())
{
return cola[frente];
}
else
{
return null;
}
}
public void pop()
{
if (!vacia())
{
frente = incremento(frente, cola.Length);
}
}
}
Ahora explicaremos cada parte:
Creamos una clase y lo llamamos cola, creamos un arreglo global de tipo objeto, esta sera nuestra cola, un frente y un posterior de tipo entero, estos seran los indices de nuestra cola.
Estos los inicializamos con un constructor.
object[] cola;
int frente;
int posterior;
public Cola(int tamano)
{
posterior = 0;
cola = new object[tamano];
for (int i = 0; i < tamano; i++)
{
cola[i] = null;
}
}
Tambien creamos un metodo para obtener el incremento. Este es un metodo interesante, ya que el arreglo en una cola es redonda.
public int incremento(int i, int tamano)
{
return (i + 1) % tamano;
}