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

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

viernes, 12 de mayo de 2017

Colas con prioridad ejemplo java

En este ejericio vamos a desarrollar en el lenguaje java un ejercicio que permita insertar datos en una cola con prioridad, para ello debemos crear 3 clases; la primera será la clase nodo la cual va tener 3 atributos, la segunda clase será clase Lista, la misma que tendrá el método para insertar datos según la prioridad que le corresponda en la lista. y finalmente la clase que realizará la invocación, instanciando los objetos necesarios para que funcione nuestro ejemplo de colas con prioridad.
En un proyecto de java crear una nueva Clase con nombre Nodo
package colasprioridad;

/**
 *
 * @author paulo.guerra.teran
 */
public class Nodo {
    
    private int valor;
    // Atributo para enlazar los nodos.
    private Nodo siguiente;
    
    int prioridad;

    Nodo(int valor, int prioridad) {
       this.valor=valor;
       this.prioridad=prioridad;
    }

    Nodo() {
       
    }
    
    public void Nodo(){
        this.valor = 0;
        this.siguiente = null;
    }

    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;
    }

    @Override
    public String toString() {
        return "Nodo{" + "valor=" + valor + ", prioridad=" + prioridad + '}';
    }
    
    
    
}


Sobre el mismo paquete del proyecto crear una nueva Clase con nombre ListaSimple
package colasprioridad;

/**
 *
 * @author paulo.guerra.teran
 */
public class ListaSimple {

    private Nodo inicio;
    // Puntero que indica el final de la lista o el ultimo nodo.
    private Nodo ultimo;

    public void Lista() {
        inicio = null;
        ultimo = null;
    }



    public void agregar(int valor, int prioridad) {
        Nodo nuevo = new Nodo(valor, prioridad);

        if (inicio == null) {
            inicio = ultimo = nuevo;
        } else {

            if (inicio.prioridad > prioridad) {
                nuevo.setSiguiente(inicio);
                inicio=nuevo;
            }else{
              Nodo ant=null;
              Nodo sig=inicio;
              while(sig!=null && prioridad>=sig.prioridad){
                  ant=sig;
                  sig=sig.getSiguiente();
              }
              nuevo.setSiguiente(sig);
              ant.setSiguiente(nuevo);
              if(sig==null){
                 ultimo=nuevo;
              }
            
            }

        }
    }

    void imprimir() {
        Nodo aux = inicio;
        do {
            System.out.println("" + aux);
            aux = aux.getSiguiente();
        } while (aux != null);

    }

}


Sobre el mismo paquete del proyecto crear una nueva Clase con nombre
package listacircular;


/**
 *
 * @author paulo.guerra.teran
 */
public class ColaPrioridad {

    
    public static void main(String[] args) {
        ListaSimple ls=new ListaSimple();
        System.out.println("Agrego nodo (100) cualquier prioridad (2)");
        ls.agregar(100, 2);
        System.out.println("Agrego nodo (200) prioridad igual al primer nodo (2)");
        ls.agregar(200, 2);
        ls.imprimir();
        System.out.println("Agrego nodo (300) prioridad 1");
        ls.agregar(300, 1);
        ls.imprimir();
        System.out.println("Agrego nodo (400) de prioridad final");
        ls.agregar(400, 3);
        ls.imprimir();
        
        
    }
}


La ejecución del programa la podemos ver en la siguiente imagen!