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 NodoLista<T> desconectarPrimero() {
   NodoLista<T> p = sigNodo;
   sigNodo = null;
   if (p != null) {
     p.antNodo = null;
   }
   return p;
 }
 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 void desconectarNodo() {
   NodoLista<T> ant = antNodo;
   NodoLista<T> sig = sigNodo;
   antNodo = null;
   sigNodo = null;
   ant.sigNodo = sig;
   if (sig != null) {
     sig.antNodo = ant;
   }
 }
Пример #5
0
 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;
 }
Пример #6
0
 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;
 }
Пример #7
0
 /**
  * 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 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 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 void insertar(T elemento, int pos) {
      NodoLista<T> nodo = new NodoLista<T>(elemento);
      if ((pos >= numElems) || pos < 0) {
        throw new IndiceFueraDeRangoException(pos);
      } else {
        NodoLista<T> aux = primero;

        for (int cont = 0; cont < pos - 1; cont++) {
          aux = aux.darSiguiente();
        }
        aux.insertarDespues(nodo);
        numElems++;
      }
    }
/**
 * Método que busca un elemento en la Lista
 * @param e - objeto a ser buscado en la Lista
 * @return el elemento buscado en caso de existir, o null en su defecto 
 */
public T buscar(T e){
  boolean a = false;
  NodoLista temp = nodo;
  while(temp!=null){
    if(temp.darElemento==e){
    return temp;
    a=true;
    }
    temp=temp.siguiente();   
  }
  if(a==false){
  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 void insertarCola(T elemento) {
   NodoLista<T> nodo = new NodoLista<T>(elemento);
   if (primero == null) {
     primero = nodo;
     ultimo = nodo;
   } else {
     ultimo.insertarDespues(nodo);
     ultimo = nodo;
   }
   numElems++;
 }
 public void insertarCabeza(T elemento) {
   NodoLista<T> nodo = new NodoLista<T>(elemento);
   if (primero == null) {
     primero = nodo;
     ultimo = nodo;
   } else {
     primero.insertarAntes(nodo);
     primero = nodo;
   }
   numElems++;
 }
    public T eliminarUltimo() {

      if (ultimo == null) {
        return null;
      } else {

        try {
          return eliminar(ultimo.darElemento());
        } catch (NoExisteException e) {

          return null;
        }
      }
    }
    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;
        }
      }
    }
 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;
 }
Пример #18
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;
 }
 public void insertarAntes(NodoLista<T> nodo) {
   nodo.sigNodo = this;
   nodo.antNodo = antNodo;
   if (antNodo != null) antNodo.sigNodo = nodo;
   antNodo = nodo;
 }
 public void insertarDespues(NodoLista<T> nodo) {
   nodo.sigNodo = sigNodo;
   nodo.antNodo = this;
   if (sigNodo != null) sigNodo.antNodo = nodo;
   sigNodo = nodo;
 }
 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");
   }
 }