Búsqueda por palabras claves

No se olviden de consultar por palabras claves! Ejemplo de Estructura de datos en java, tutorial de estructura de datos
Búsqueda personalizada

jueves, 29 de noviembre de 2018

lista circular simple, listas enlazadas, estructura de datos circular, estructura de datos con java

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();

    }

}

martes, 20 de noviembre de 2018

Ordenar a medida que vamos insertando datos en una estructura de datos tipo lista doblemente enlazada

Ejercicio en java de estructuras de datos Ordenar a medida que vamos insertando datos en una estructura de datos tipo lista doblemente enlazada Se crea un método insertar que recibe un parámetro que corresponde con el dato del nodo a instar en la Lista, según las condiciones se insertará el nuevo nodo en el inicio, en el centro de la lista o en el final.
public class Lista {
    
    private Nodo inicio;
    private Nodo fin;

    public Lista() {       
        inicio=fin=null;
    }
    
    public boolean esVacio(){
        return inicio==fin && fin==null;
    }
    
    public void insertarOrdenado(int dato) {
        if (!esVacio()) {
            Nodo nuevo;
            if (dato < inicio.getDato()) {
                nuevo = new Nodo(null, inicio, dato);
                inicio.setAnterior(nuevo);
                inicio = nuevo;
            } else {
                Nodo aux = inicio;
                while (aux != null && dato > aux.getDato()) {
                    aux = aux.getSiguiente();
                }
                if (aux != null) {
                    nuevo = new Nodo(aux.getAnterior(), aux, dato);
                    aux.getAnterior().setSiguiente(nuevo);
                    aux.setAnterior(nuevo);
                } else {
                    nuevo = new Nodo(fin, null, dato);
                    fin.setSiguiente(nuevo);
                    fin = nuevo;

                }

            }
        } else {
            Nodo nuevo = new Nodo(null, null, dato);
            inicio = fin = nuevo;

        }

    }
    
    public void imprimir(){
        Nodo aux= inicio;
        while(aux != null){
            System.out.println(aux.getDato());
            aux= aux.getSiguiente();
        }
    }
}