Mostrando entradas con la etiqueta Colas. Mostrar todas las entradas
Mostrando entradas con la etiqueta Colas. Mostrar todas las entradas

domingo, 25 de agosto de 2013

Cola de Nodos

Interfaz a Utilizar:

package Colas_de_Nodos;

/**
 * @author Daniel Cataño Restrepo <dasniel199410@gmail.com>
 */
public interface INodeQueue<E>{
    public void add(E target);
    public boolean isEmpty();
    public void print();
    public E remove();
}
La clase NodeQueue

package Colas_de_Nodos;

/**
 * @author Daniel Cataño Restrepo <dasniel199410@gmail.com>
 */

public class NodeQueue<E> implements INodeQueue<E>{
    
    private E item;
    private NodeQueue<E> next;
    private NodeQueue<E> raiz, top;
    
    public NodeQueue(E item){
        this.item=item;
    }
    
    public NodeQueue(E item, NodeQueue<E> next){
        this.item=item;
        this.next=next;
    }
    
    public NodeQueue(NodeQueue<E> next){
        this.next=next;
    }
    
    public E getItem() {
        return item;
    }

    public void setItem(E item) {
        this.item = item;
    }

    public NodeQueue<E> getNext() {
        return next;
    }

    public void setNext(NodeQueue<E> next) {
        this.next = next;
    }
    
    public void add(E target) {
        NodeQueue<E> nodoNuevo=new NodeQueue<>(target, null);
        if(isEmpty()){
            raiz=nodoNuevo;
            top=nodoNuevo;
        }else{
            top.next=nodoNuevo;
            top=nodoNuevo;
        }
    }

    public boolean isEmpty() {
        return raiz==null;
    }

    public void print() {
        System.out.print("[");
        for(NodeQueue temp=raiz; temp!=null; temp=temp.next){
            if(temp==top)
                System.out.print(temp.item);
            else
                System.out.print(temp.item+",");            
        }
        System.out.println("]");
    }

    public E remove() {
        if(!isEmpty()){
            E info=raiz.item;
            if(raiz==top){
                raiz=null;
                top=null;
            }else{
                raiz=raiz.next;
            }
            return info;
        }
        return null;
    }    
}
La clase principal

package Colas_de_Nodos;
/**
 * @author Daniel Cataño Restrepo <dasniel199410@gmail.com>
 */
public class Main {

    public static void main(String[] args) {
        NodeQueue cola=new NodeQueue(1);
        cola.add(3);
        cola.add(3);
        cola.add(3);
        cola.add(3);
        cola.add(3);
        cola.add(3);
        cola.print();
        cola.remove();
        cola.print();
        cola.remove();
        cola.print();
        cola.remove();
        cola.print();
        cola.remove();
        cola.print();
        cola.remove();
        cola.print();
        cola.remove();
        cola.print();
        cola.add(3);
        cola.print();
        cola.add(3);
        cola.print();
        cola.add(3);
        cola.print();
        cola.add(3);
        cola.print();
        cola.add(3);
        cola.print();
        cola.add(3);
        cola.print();
    }
}
Lo Que imprime en pantalla:

Colas

Interfaz a Utilizar:

package Colas;

/**
 * @author Daniel Cataño Restrepo <dasniel199410@gmail.com>
 */
public interface IQueue<E>{
    public void add(E target);
    public boolean isEmpty();
    public void print();
    public E remove();
}
La clase Queue

package Colas;

/**
 * @author Daniel Cataño Restrepo <dasniel199410@gmail.com>
 */
public class Queue<E> implements IQueue<E>{
    
    E[] data;
    
    public Queue(){
        data=(E[])new Object[0];
    }
    
    /**
     * Agrega elemento al final de la cola
     */
    public void add(E target) {
        E[] temp=(E[])new Object[data.length+1];
        if(!isEmpty())
            for(int i=0; i<data.length; i++)
                temp[i]=data[i];
        temp[data.length]=target;
        data=temp;
    }

    public boolean isEmpty() {
        return data.length==0;
    }

    public void print() {
        System.out.print("[");
        for(int i=0; i<data.length; i++){
            if(i==data.length-1)
                System.out.print(data[i]);
            else
                System.out.print(data[i]+",");
        }
        System.out.println("]");
    }
    
    /**
     * Remueve el primer elemento de la estructura y lo retorna
     */
    public E remove() {
        if(!isEmpty()){
            E firstElement=data[0];
            E[]temp=(E[])new Object[data.length-1];
            for(int i=0; i<data.length-1; i++)
                temp[i]=data[i+1];
            data=temp;
            return firstElement;
        }
        return null;
    }   
}
La clase principal

package Colas;

/**
 * @author Daniel Cataño Restrepo <dasniel199410@gmail.com>
 */
public class Main {

    public static void main(String[] args) {
        Queue q=new Queue();
        q.add(1);
        q.add(2);
        q.add(3);
        q.add(4);
        q.add(1);
        q.add(2);
        q.add(3);
        q.add(4);
        q.print();
        q.remove();
        q.remove();
        q.print();
    }
}