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); } }