Ejemplos Listas en java

Descargar


Escribir un método que reciba como parámetro una lista y realiza el  entrelazado de las mismas.

public void cruzaRec(LinearNode<T> l1, LinearNode<T >l2) {  if ((l1!=null) && (l2!=null))
                {
                                LinearNode<T> aux=l1.getNext();                   l1.setNext(l2.getNext());                    l2.setNext(aux);
                                                cruzaRec(l1.getNext(),l2.getNext());
                }
public void cruza(LinkedOrderList<T> other){
                LinearNode<T> l1=this.head;           LinearNode<T> l2=other.head;    cruzaRec(l1,l2);
                }                

Escribir una función recursiva que examine una lista encadenada y calcule el número de claves que están entre dos valores pasados como parámetro. 

private  int NElemBetweenRec(LinearNode<T> list, T min, T max){   if (list==null){
                    return 0;
  }   else {                 if ((list.getElem().compareTo(min)>=0) &&             (list.getElem().compareTo(max)<=0)){
                                                    return 1 + NElemBetweenRec(list.getNext(),min,max);
                                }
                                else if (list.getElem().compareTo(max)<=0)                                  return NElemBetweenRec(list.getNext(),min,max);
                                                        else return 0;
                }
}
public int NElemBetween(T min, T max){
                                           return NElemBetweenRec(head,min,max);
}

Escribir el método divide(), cuya cabecera se indica más abajo, y que parte una lista por la mitad. La primera  mitad contendrá los elementos del 0 al (contador/2) (división entera, siendo contador el número de elementos de la lista) y se quedará en el objeto actual. La 2ª mitad contendrá el resto de los elementos  y será retornada como una nueva lista por el método.
 public ListADT<T> divide() {
                 
                                   int mitad=((contador)/2);
 
                             int cont=0;
                              LinearNode<T> aux=head;
                                   LinearNode<T> otraMitad=null;
  
      while (cont<mitad-1){
                                aux=aux.getNext();                             cont=cont+1;
                        }
   //aux es una referencia al último nodo de la primera mitad
                otraMitad=aux.getNext();                 aux.setNext(null);
                 
       ListADT<T> nuevaLista=new LinkedOrderList<T>(otraMitad,                                     contador-mitad);
                 
                                return nuevaLista;
 }