public void insertInPosition(int posicion, T datos) {
        if (posicion >= 0 && posicion <= getLength()) {
            if (posicion == 0 || posicion == getLength()) {
                if (posicion == 0) {//si la posicion es al inicio.
                    // System.out.println("entro");
                    AddHead(datos);
                }
                if (posicion == getLength()) {//si la posicion es al final.
                    append(datos);
                }
            } else {
                int contador_posicion = 1;
                Node tmp = _head;
                while (tmp.getNext() != null && contador_posicion < posicion) {
                    tmp = tmp.getNext();
                    contador_posicion += 1;
                }
                if (tmp.getNext() == null)
                    return;
                else {
                    Node nuevo = new Node(datos);
                    nuevo.setNext(tmp.getNext());
                    tmp.setNext(nuevo);
                    // tmp.getNext().SetPrevious(nuevo);
                    //nuevo.SetPrevious(tmp);
                }
            }
        } else
            System.out.println("Posicion invalida");
    }