コード例 #1
0
 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");
   }
 }
コード例 #2
0
    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;
      }
    }
コード例 #3
0
 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;
 }
コード例 #4
0
 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;
 }
コード例 #5
0
 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();
   }
 }