viernes, 25 de noviembre de 2011

Cola simple

Este es un ejemplo de una cola simple, la cual no es ni circular ni está implementada con listtas enlazadas

class Cola_Alternativa
{
int[] _datos;
int _ultimo;
bool _vacia, _llena;

public Cola_Alternativa(int size)
{
_datos = new int[size];
_ultimo = -1;
_vacia = true;
_llena = false;
}

public Cola_Alternativa(Cola_Alternativa cola, int size)
:this(size)
{
int length = cola._ultimo + 1 < size ? cola._ultimo + 1 : size;
for (int i = 0; i < length; i++)
this._datos[i] = cola._datos[i];
this._ultimo = length - 1;
  }
Este método sirve para agregar datos a la cola simple
public void Agregar(int dato)
{
if (_ultimo+1 < _datos.Length)
{
_datos[++_ultimo] = dato;
_vacia = false;
if (_ultimo == _datos.Length)
_llena = true;
}
else
throw new ApplicationException("Overflow");
  }
Este método sirve para extraer datos de la cola simple
public int Extraer()
{
if (_ultimo >= 0)
{
int temp = _datos[0];
Avanzar();
_ultimo--;
return temp;
}
else
throw new ApplicationException("Underflow");
  }
Este es un método crucial para el funcionamiento de esta cola, ya que permite que los elementos avancen el la cola
private void Avanzar()
{
for (int i = 0; i < _ultimo; i++)
_datos[i] = _datos[i + 1];
}

public override string ToString()
{
string s = "";
for (int i = 0; i <= _ultimo; i++)
s += _datos[i] + " ";
return s;
}
}
Descarga el proyecto completo desde aquí
http://www.mediafire.com/?p63yaccm7drgzgh

No hay comentarios:

Publicar un comentario