0% encontró este documento útil (0 votos)
86 vistas4 páginas

Secuencias Java

Este documento describe la clase Secuencias, la cual contiene métodos para manipular secuencias enlazadas de datos. Incluye métodos para crear secuencias aleatorias, listar los datos de una secuencia, modificar los primeros datos, saturar valores mayores a un máximo, buscar datos, insertar y eliminar datos de forma iterativa y recursiva. El objetivo es proporcionar operaciones básicas sobre secuencias enlazadas para poder realizar pruebas y ejemplos.

Cargado por

Danielito Friend
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
86 vistas4 páginas

Secuencias Java

Este documento describe la clase Secuencias, la cual contiene métodos para manipular secuencias enlazadas de datos. Incluye métodos para crear secuencias aleatorias, listar los datos de una secuencia, modificar los primeros datos, saturar valores mayores a un máximo, buscar datos, insertar y eliminar datos de forma iterativa y recursiva. El objetivo es proporcionar operaciones básicas sobre secuencias enlazadas para poder realizar pruebas y ejemplos.

Cargado por

Danielito Friend
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

package paqueteLineales;

/** Clase Secuencias. Ejemplos de manipulacin de


* secuencias enlazadas.
* Para poder hacer pruebas, se incluyen mtodos para
* crear y visualizar listas.
*
* @author Libro IIP-PRG
* @version 2011
*/
public class Secuencias {
/** Calcula un valor aleatorio en [0,n]
* @param n int
*/
private static int aleatorio(int n){
return (int) ([Link]()*(n+1));
}
/** Devuelve una secuencia enlazada de n datos, con valores
* aleatorios en [0,n]. Si n<=0 devuelve null.
* @param n int
* @return un NodoInt.
*/
public static NodoInt SecAleat(int n){
NodoInt sec = null;
for (int i = 1; i<=n; i++) sec = new NodoInt(aleatorio(n),sec);
return sec;
}
/** Devuelve un String con los datos que aparecen en sec.
* Si sec es null, devuelve "".
* @param sec NodoInt
* @return un String.
*/
public static String listado(NodoInt sec){
NodoInt aux = sec; String result ="";
while (aux!=null) {
result += [Link];
aux = [Link];
}
return result;
}
/** Modifica el primer dato en sec:
* - si est en [90,92] lo cambia a 91
* - si est en [93,95] lo cambia a 92
* - si es cualquier otro valor, aade el 90 al principio
* Si sec es null, no se hace ningn cambio.
* @param sec NodoInt
* @return un NodoInt, la secuencia modificada.
*/
public static NodoInt norma90(NodoInt sec) {
if (sec!=null) {
if (90<=[Link] && [Link]<=92) [Link] = 91;
else if (93<=[Link] && [Link]<=95) [Link] = 92;
else sec = new NodoInt(90,sec);
}
return sec;
}

/** Modifica los datos de la secuencia sec mayores que maximo,


* cambindolos por maximo.
* @param sec NodoInt
*/
public static void saturar(NodoInt sec,int maximo){
NodoInt aux = sec;
while (aux!=null) {
if ([Link]>maximo) [Link] = maximo;
aux = [Link];
}
}
/** Busca y devuelve la primera posicin en la que aparece el dato d
* en la secuencia sec. Si no aparece, devuelve -1.
* @param sec NodoInt
* @param d int
* @return un int.
*/
public static int buscaPos(NodoInt sec, int d) {
NodoInt aux = sec; int i = 0;
while (aux!=null && [Link]!=d) {
aux = [Link]; i++;
}
if (aux!=null) return i; else return -1;
}
/** 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.
* @param sec NodoInt
* @param d int
* @param i int
* @return un NodoInt, la secuencia modificada.
*/
public static NodoInt insertar(NodoInt sec, int d, int i) {
if (i==0) sec = new NodoInt(d,sec);
else {
NodoInt aux = sec; int k = 0;
while (aux!=null && k<i-1) {
aux = [Link];
k++;
}
if (aux!=null)
[Link] = new NodoInt(d,[Link]);
}
return sec;
}
/** Dada sec una secuencia ordenada, inserta el dato d
* en la secuencia manteniendo la ordenacin.
* @param sec NodoInt
* @param d int
* @param i int
* @return un NodoInt, la secuencia modificada.
*/
public static NodoInt insertarOrd(NodoInt sec, int d) {
NodoInt aux = sec, ant = null; // el primer nodo no tiene anterior definido
while (aux!=null && [Link]<d) {

ant = aux;
aux = [Link];
}
if (aux==sec) // ant==null
sec = new NodoInt(d,sec);
else [Link] = 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 && [Link]!=d) {
ant = aux;
aux = [Link];
}
if (aux!=null) // xito en la bsqueda
if (ant==null) // aux es el primer nodo
sec = [Link];
else [Link] = [Link];
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 ([Link]<umbral) {
if (aux==sec) sec = [Link];
else [Link] = [Link];
}
else ant = aux;
aux = [Link];
}
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 [Link] = insertarR([Link],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 ([Link]>=d) sec = new NodoInt(d,sec);
else [Link] = insertarOrd([Link],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 ([Link]==d) sec = [Link];
else [Link] = borrarR([Link],d);
}
return sec;
}
}

También podría gustarte