public void quitarDuplicados() {
   Nodo<T> aux = inicio;
   Nodo<T> aux2 = null;
   T dato = null;
   while (aux.getLiga() != null) {
     dato = aux.getInfo();
     aux2 = inicio;
     int indice = 0;
     boolean duplicado = false;
     while (aux2 != null) {
       if (dato.equals(aux2.getInfo())) {
         if (!duplicado) {
           duplicado = true;
           aux2 = aux2.getLiga();
           indice++;
         } else {
           aux2 = aux2.getLiga();
           borrar(indice);
           indice++;
         }
       } else {
         indice++;
         aux2 = aux2.getLiga();
       }
     }
     aux = aux.getLiga();
   }
 }
 public ListaLigada<T> dividir(int opcion) {
   ListaLigada<T> lista = new ListaLigada<>();
   int elementos = 1;
   Nodo<T> aux = inicio;
   while (aux.getLiga() != null) {
     elementos++;
     aux = aux.getLiga();
   }
   elementos = (elementos % 2) == 0 ? elementos / 2 : elementos / 2 + 1;
   aux = inicio;
   int i = 1;
   if (opcion == 1) {
     while (i <= elementos) {
       lista.insertarFinal(aux.getInfo());
       aux = aux.getLiga();
       i++;
     }
   } else {
     while (aux != null) {
       if (i > elementos) {
         lista.insertarFinal(aux.getInfo());
       }
       aux = aux.getLiga();
       i++;
     }
   }
   return lista;
 }
 public void mostrar() {
   Nodo<T> aux = inicio;
   while (aux != null) {
     System.out.println(aux.getInfo());
     aux = aux.getLiga();
   }
 }
 public ListaLigada<T> invertirLista() {
   ListaLigada<T> respuesta = new ListaLigada<>();
   Nodo<T> aux = inicio;
   while (aux != null) {
     respuesta.insertarInicio(aux.getInfo());
     aux = aux.getLiga();
   }
   return respuesta;
 }
 public boolean buscar(T dato) {
   boolean resultado = false;
   Nodo<T> aux = inicio;
   while (aux != null) {
     if (aux.getInfo().equals(dato)) {
       resultado = true;
     }
     aux = aux.getLiga();
   }
   return resultado;
 }
  public ListaLigada<T> intercalar(int mitad) {
    ListaLigada<T> lista = new ListaLigada<>();
    boolean agregar = mitad == 1 ? true : false;
    Nodo<T> aux = inicio;
    while (aux != null) {
      if (agregar) {
        lista.insertarFinal(aux.getInfo());
        aux = aux.getLiga();
        agregar = false;
      } else {
        aux = aux.getLiga();
        agregar = true;
      }
    }

    return lista;
  }
  public void insertarAntesde(T dato, T nuevo) {
    Nodo<T> actual = inicio;
    Nodo<T> anterior = null;
    boolean band = false;
    while (actual != null && !band) {
      if (!actual.getInfo().equals(dato)) {
        anterior = actual;
        actual = actual.getLiga();
      } else {
        band = true;
      }
    }
    if (band) {
      Nodo<T> nodo = new Nodo<>(nuevo);

      anterior.setLiga(nodo);
      nodo.setLiga(actual);
    }
  }