lunes, 25 de julio de 2011

COLA

COLA
Una cola es simplemente un lugar para almacenar cosas, donde esas cosas se insertan una detrás de otra y para extraer siempre se lo hace por adelante de la cola donde se encuentra el primer elemento. Una cola funciona como una fila o cola de personas, que esperan su turno para ser atendidas, la primera persona atendida es siempre la primera de la fila y cuando llega una persona y queremos incorporarla a cola o adicionarla debemos hacerlo por detrás de la ultima persona en la cola.




/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package estructurasdatosdinamicas;


/**
 *
 * @author Administrador
 */
public class Cola extends ListaEnlazada{
    
    public Cola(){
        super("cola 1");
    }
    public void Encolar(Object obj){
        super.InsertAtras(obj);
    }
    public Object Decolar(){
        return super.DeleteFrente();
    }
    public Boolean colaVacia(){
        return super.Lvacia();
    }
}




Una cola circular

Una cola circular o anillo es una estructura de datos en la que los elementos están de forma circular y cada elemento tiene un sucesor y un predecesor. Los elementos pueden cosultarse, añadirse y eliminarse unicamente desde la cabeza del anillo que es una posición distinguida. Existen dos operaciones de rotaciones, una en cada sentido, de manera que la cabeza del anillo pasa a ser el elemento sucesor, o el predecesor, respectivamente, de la cabeza actual.

BICOLAS

Es una cola en la se puede "sacar" y "meter" elementos tanto de la delantera de la cola como e la cola. Si una cola, como estructura de datos abstracta, tiene dos operaciones llamadas "push" (que inserta un elemento al final de la cola) y "pop" (que extrae un elemento del principio de la cola), entonces una bicola tiene dos operaciones adicionales llamadas "push_front" y "pop_back".
Toda operación debería implementarse en un tiempo amortizado constante O(1). Al igual que la cola regular, la implementación e un array no es correcta por el costo del espacio o bien el shift de desencolar.
A diferencia de la cola simple, la lista enlazada no es suficiente. La implementación es trivial en una lista doblemente enlazada pero tiene el problema del acceso aleatorio a un elemento del medio de la cola. La implementación apropiada es un buffer circular con crecimiento dinámico.
Existen implementaciones listas en todos los lenguajes de programación. c++ tiene std::deque, java tiene la interfaz java.util.Deque, perl permite las operaciones pollback y pollfront en todos los arrays, etc. etc.


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package estructurasdatosdinamicas;

/**
 *
 * @author Administrador
 */
public class Bicola extends ListaEnlazada{
    
    public Bicola(){
        super("bicola 1");
    }
    public void PushAtras(Object obj){
        super.InsertAtras(obj);
    }
    public Object PopFrente(){
        return super.DeleteFrente();
    }
    public void PushFrente(Object obj){
        super.InsertFrente(obj);
    }
    public Object PopAtras(){
        return super.DeleteAtras();
    }
    public Boolean BicolaVacia(){
        return super.Lvacia();
    }
    
}



Artigos Relacionados

0 comentarios:

Publicar un comentario