lunes, 17 de octubre de 2011

"Que Son Las Colas..."

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.







Con fines educativos una cola se la puede representar gráficamente así:






Una cola puede almacenar lo que nosotros queramos, números, personas, documentos, cualquier cosa. Esta estructura de datos tiene muchas aplicaciones en la informática al igual que la pila, por ejemplo cuando mandan a imprimir varios documentos a una impresora, existe una cola de impresión que sigue la filosofía, se imprimen los primeros documentos y si quiero imprimir un nuevo documento se adiciona al final de todos los documentos que están esperando a imprimirse.




Existen dos formas de implementar para que la cola sea o bien estática (reservamos un espacio fijo en memoria) o bien dinámica (el tamaño en memoria va creciendo según se requiere), se implementa con arrays o con listas enlazadas respectivamente.



Para manipular elementos en el vector de la cola son necesarias variables que me digan en donde empiezan los elementos y otra en donde terminan,usamos dos variables enteras que llamaremos inicio y fin, estas variables funcionan de la siguiente manera:





Consideremos que nuestro array bidimensional o vector lo creamos con 10 posiciones enumeradas del 0 al 9, la variable inicio guarda una posición antes en la cual se encuentra el primer elemento y la variable fin guarda la posición en donde se encuentra justamente el ultimo elemento.




Entonces los atributos que tendrá nuestra clase Cola de números enteros serán:

1.- private final int MAXIMO = 101;
2.- private int[] V;
3.- private int inicio;
4.- private int fin;




Ahora una vez teniendo esta estructura hay que definir los métodos principales para manejar una cola, estos métodos son:






  • esVacia() : boolean **** retorna verdad si la cola esta vacía es decir no tiene ningún elemento, para esto solo se pregunta si inicio es igual a fin.


  • esLlena() : boolean **** retorna verdad si es que la cola esta llena, pasa cuando se ha llenado todo el vector, la cantidad de elemento que permite la cola lo determina la variable MAXIMO.


  • adicionar(int a) **** adiciona un nuevo elemento a la cola, para esto solo se incrementa la variable fin y se coloca el elemento en esa posición.


  • eliminar() : int **** extrae el primer elemento de la cola, para esto se retorna la posición inicio + 1 del vector y se incrementa inicio en 1.


  • tamaño() : int **** retorna la cantidad de elementos que tiene la cola, para realizar esto se realiza la resta fin - inicio.



  • copiar(Cola B) **** copia tal cual la cola B a la cola destino, al finalizar cola B queda totalmente vacía. Este método es muy útil al momento de hacer operaciones con colas.



Con todos estos métodos básicos se puede realizar cualquier operación que necesitemos.




















No hay comentarios:

Publicar un comentario