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 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.
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();
}
}
0 comentarios:
Publicar un comentario