public T eliminar(T elemento) { NodoLista<T> actual = primero; if (elemento == null || longitud == 0) { return null; } else if (elemento.compareTo(actual.darElemento()) == 0) { primero = actual.darSiguiente(); if (primero != null) { primero.cambiarAnterior(null); } longitud--; return elemento; } else { actual = actual.darSiguiente(); while (actual != null) { if (elemento.compareTo(actual.darElemento()) == 0) { NodoLista<T> anterior = actual.darAnterior(); NodoLista<T> siguiente = actual.darSiguiente(); anterior.cambiarSiguiente(siguiente); if (siguiente != null) { siguiente.cambiarAnterior(anterior); } longitud--; return elemento; } else { actual = actual.darSiguiente(); } } } return null; }
public T eliminar(int pos) { T valor = null; if ((pos >= numElems) || pos < 0) { throw new IndiceFueraDeRangoException(pos); } else if (pos == 0) { if (primero.equals(ultimo)) { ultimo = null; } valor = primero.darElemento(); primero = primero.desconectarPrimero(); numElems--; return valor; } else { NodoLista<T> p = primero.darSiguiente(); for (int cont = 1; cont < pos; cont++) { p = p.darSiguiente(); } if (p.equals(ultimo)) { ultimo = p.darAnterior(); } valor = p.darElemento(); p.desconectarNodo(); numElems--; return valor; } }
public T eliminar(T elemento) throws NoExisteException { T valor = null; if (primero == null) { throw new NoExisteException("Elemento no existe"); } else if (primero.darElemento().equals(elemento)) { if (primero.equals(ultimo)) { ultimo = null; } valor = primero.darElemento(); primero = primero.desconectarPrimero(); numElems--; return valor; } else { for (NodoLista<T> p = primero.darSiguiente(); p != null; p = p.darSiguiente()) { if (p.darElemento().equals(elemento)) { if (p.equals(ultimo)) { ultimo = p.darAnterior(); } valor = p.darElemento(); p.desconectarNodo(); numElems--; return valor; } } throw new NoExisteException("Elemento no existe"); } }
public T buscar(T modelo) { for (NodoLista<T> p = primero; p != null; p = p.darSiguiente()) { if (p.darElemento().equals(modelo)) { return p.darElemento(); } } return null; }
public String toString() { String resp = "ida: [" + numElems + "]:"; for (NodoLista<T> p = primero; p != null; p = p.darSiguiente()) { resp += p.darElemento().toString() + "<->"; } resp += "\r\nvuelta:[" + numElems + "]:"; for (NodoLista<T> p = ultimo; p != null; p = p.darAnterior()) { resp += p.darElemento().toString() + "<->"; } return resp; }
public T buscar(T elemento, Comparator<T> c) { NodoLista<T> actual = primero; while (actual != null) { if (c.compare(elemento, actual.darElemento()) == 0) { return actual.darElemento(); } else { actual = actual.darSiguiente(); } } return null; }
public Object[] darArreglo() { Object[] arreglo = new Object[darLongitud()]; NodoLista<T> actual = primero; int i = 0; while (actual != null) { arreglo[i] = actual.darElemento(); i++; actual = actual.darSiguiente(); } return arreglo; }
/** * Retorna el primer elemento de la lista<br> * Elimina el elemento de la lista. * * @return */ public T darPrimero() { if (primero != null) { T respuesta = primero.darElemento(); primero = primero.darSiguiente(); if (primero != null) { primero.cambiarAnterior(null); } longitud--; return respuesta; } return null; }
public Iterador<T> darIterador() { IteradorSimple<T> respuesta = new IteradorSimple<T>(numElems); NodoLista<T> iterador = primero; while (iterador != null) { try { respuesta.agregar(iterador.darElemento()); iterador = iterador.darSiguiente(); } catch (IteradorException e) { } } return respuesta; }
public T dar(int pos) { if (pos >= numElems || pos < 0) { throw new IndiceFueraDeRangoException(pos); } else { NodoLista<T> aux = primero; for (int cont = 0; cont < pos; cont++) { aux = aux.darSiguiente(); } return aux.darElemento(); } }
public T eliminarUltimo() { if (ultimo == null) { return null; } else { try { return eliminar(ultimo.darElemento()); } catch (NoExisteException e) { return null; } } }
public void eliminarNodo(NodoLista<T> nodo) throws NoExisteException { if (buscar(nodo.darElemento()) != null) { throw new NoExisteException("El nodo especificado no pertenece a la lista"); } if (primero == nodo) { primero = nodo.desconectarPrimero(); if (ultimo == nodo) { ultimo = null; } } else { if (ultimo == nodo) { ultimo = nodo.darAnterior(); } nodo.desconectarNodo(); } }
public T eliminarPrimero() { // // Si no tiene if (primero == null) { return null; } else { // // Elimina el primer elemento try { return eliminar(primero.darElemento()); } catch (NoExisteException e) { return null; } } }