En el ejercicio se presentan listas circulares las cuales están formadas por las clases Nodo Simple y ListaCircular, se realiza con listas enlazadas simples un solo enlace hacia el siguiente nodo, el ejercicio realiza inserción de nodos y la impresión de datos.
package listacircular;
public class Nodo {
private int valor;
// Variable para enlazar los nodos.
private Nodo siguiente;
public Nodo(){
this.valor = 0;
this.siguiente = null;
}
public Nodo(int valor, Nodo siguiente) {
this.valor = valor;
this.siguiente = siguiente;
}
public int getValor() {
return valor;
}
public void setValor(int valor) {
this.valor = valor;
}
public Nodo getSiguiente() {
return siguiente;
}
public void setSiguiente(Nodo siguiente) {
this.siguiente = siguiente;
}
}
package listacircular;
package prylistascircular;
/**
*
* @author laboratorio
*/
public class Circular {
private Nodo inicio;
private Nodo fin;
public Circular() {
inicio = fin = null;
}
public boolean esVacia() {
return inicio == null && fin == null;
}
public void insertarInicio(int dato) {
Nodo nuevo = new Nodo(dato, fin, inicio);
if (esVacia()) {
inicio = fin = nuevo;
} else {
inicio.setAnterior(nuevo);
fin.setSiguiente(nuevo);
inicio = nuevo;
}
}
public void insertarFin(int dato) {
Nodo nuevo = new Nodo(dato, fin, inicio);
if (esVacia()) {
inicio = fin = nuevo;
} else {
inicio.setAnterior(nuevo);
fin.setSiguiente(nuevo);
fin = nuevo;
}
}
public void imprimir() {
Nodo aux = inicio;
do {
System.out.println(aux.getDato());
aux = aux.getSiguiente();
} while (aux != inicio);
}
}
package prylistascircular;
/**
*
* @author laboratorio
*/
public class Hilo implements Runnable {
private Circular lista;
private int min;
private int max;
public Hilo(Circular lista, int min, int max) {
this.lista = lista;
this.min = min;
this.max = max;
}
@Override
public void run() {
for (int i = min; i < max; i++) {
int acum = 0;
for (int j = 1; j <= i / 2; j++) {
if (i % j == 0) {
acum += j;
}
}
if (acum == i) {
lista.insertarFin(i);
System.out.println("Inserto; " + i);
}
}
}
}
package prylistascircular;
/**
*
* @author laboratorio
*/
public class PryListasCircular {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws InterruptedException {
// TODO code application logic here
Circular lista = new Circular();
Hilo h1 = new Hilo(lista, 1, 1000);
h1.run();
Hilo h2 = new Hilo(lista, 8000, 9000);
h2.run();
Hilo h3 = new Hilo(lista, 33550030, 33551000);
h3.run();
lista.imprimir();
}
}
No hay comentarios:
Publicar un comentario