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