ant = aux;
aux = aux.siguiente;
}
if (aux==sec) // ant==null
sec = new NodoInt(d,sec);
else ant.siguiente = new NodoInt(d,aux);
return sec;
}
/** Elimina, si existe, la primera ocurrencia del dato d en la
* secuencia sec. Si dicho dato no aparece, no se realiza ningn
* cambio.
* @param sec NodoInt
* @param d int
* @return un NodoInt, la secuencia modificada.
*/
public static NodoInt borrar(NodoInt sec, int d) {
NodoInt aux = sec, ant = null;
while (aux!=null && aux.dato!=d) {
ant = aux;
aux = aux.siguiente;
}
if (aux!=null) // xito en la bsqueda
if (ant==null) // aux es el primer nodo
sec = aux.siguiente;
else ant.siguiente = aux.siguiente;
return sec;
}
/** Elimina de la secuencia sec todos los valores menores
* que umbral.
* @param sec NodoInt
* @param umbral int
* @return un NodoInt, la secuencia modificada.
*/
public static NodoInt borrarMenores(NodoInt sec, int umbral) {
NodoInt aux = sec, ant = null;
while (aux!=null) {
if (aux.dato<umbral) {
if (aux==sec) sec = sec.siguiente;
else ant.siguiente = aux.siguiente;
}
else ant = aux;
aux = aux.siguiente;
}
return sec;
}
// MTODOS RECURSIVOS:
/** Inserta el dato d en la posicin i de la secuencia, i>=0.
* si i est ms all del final de la secuencia, no se realiza
* ningn cambio. Los datos de sec se suponen numerados de 0 en
* adelante. Versin recursiva del mtodo insertar.
* @param sec NodoInt
* @param d int
* @param i int
* @return un NodoInt, la secuencia modificada.
*/
public static NodoInt insertarR(NodoInt sec, int d, int i) {
if (sec==null) {
if (i==0) sec = new NodoInt(d);
}
else {
if (i==0) sec = new NodoInt(d,sec);
else sec.siguiente = insertarR(sec.siguiente,d,i-1);
}
return sec;
}
/** Dada sec una secuencia ordenada, inserta el dato d
* en la secuencia manteniendo la ordenacin.
* Versin recursiva del mtodo insertarOrd
* @param sec NodoInt
* @param d int
* @param i int
* @return un NodoInt, la secuencia modificada.
*/
public static NodoInt insertarOrdR(NodoInt sec, int d) {
if (sec==null) sec = new NodoInt(d);
else {
if (sec.dato>=d) sec = new NodoInt(d,sec);
else sec.siguiente = insertarOrd(sec.siguiente,d);
}
return sec;
}
/** Elimina, si existe, la primera ocurrencia del dato d en la
* secuencia sec. Si dicho dato no aparece, no se realiza ningn
* cambio. Versin recursiva del mtodo borrar.
* @param sec NodoInt
* @param d int
* @return un NodoInt, la secuencia modificada.
*/
public static NodoInt borrarR(NodoInt sec, int d) {
if (sec!=null) {
if (sec.dato==d) sec = sec.siguiente;
else sec.siguiente = borrarR(sec.siguiente,d);
}
return sec;
}
}