public virtual void Agregar(T valor)
        {
            Comparador c = (Comparador)valor;

            NodoListaEnlazada <T> nuevo = new NodoListaEnlazada <T>(c);

            if (Primero == null)
            {
                Primero = nuevo;
                Ultimo  = nuevo;

                nuevo.Anterior  = null;
                nuevo.Siguiente = null;
            }
            else
            {
                NodoListaEnlazada <T> aux = Primero;

                while (aux != null && c.MenorQue(aux.Dato)) //aux.Valor < valor
                {
                    aux = aux.Siguiente;
                }

                if (aux == null)
                {
                    nuevo.Anterior   = Ultimo;
                    Ultimo.Siguiente = nuevo;
                    nuevo.Siguiente  = null;
                    Ultimo           = nuevo;
                }
                else
                {
                    if (aux.Anterior == null)
                    {
                        Primero = nuevo;
                    }
                    else
                    {
                        aux.Anterior.Siguiente = nuevo;
                    }

                    nuevo.Anterior  = aux.Anterior;
                    aux.Anterior    = nuevo;
                    nuevo.Siguiente = aux;
                }
            }

            Count++;
        }
 public ListaDobleEnlazada()
 {
     Primero = null;
     Ultimo  = null;
 }
 public NodoListaEnlazada(NodoListaEnlazada <T> anterior, Object valor, NodoListaEnlazada <T> siguiente)
 {
     this.Dato = valor;
     Anterior  = anterior;
     Siguiente = siguiente;
 }