¿Qué es una cola?
Colas Circulares
Operaciones básicas con colas y más.... Edición # 1
Noviembre 2014
Editorial
Informaci贸n sobre el editor:
Contenido
Cola: Es una estructura de datos
lineal…...pág.
1
Cola circular: estructura de datos en la que los elementos tienen un sucesor y un predecesor..........
pág. 2 Operaciones Básicas:
Función lleno-vacío, insertar
eliminar.....pág.
3
Extra: aplicaciones de colas…….pág.5
COLAS Es una estructura de datos que almacena elementos en una lista y permite acceder a los datos por uno de los dos extremos de la lista. Un elemento se inserta en una cola (parte final) de la lista y se suprime o elimina por el frente (parte inicial, cabeza) de la lista. Las aplicaciones utilizan una cola para almacenar elementos en su orden de aparición o concurrencia. 1
Frente
2
3
4
Los elementos en una cola se eliminan de la cola en el mismo orden en que se almacenan por consiguiente la cola es una estructura de tipo FIFO (primero en entrar primero en salir). Ejemplos de tipos de Cola: -Servicio de atención al cliente en un almacén. -Acción de gestión de memoria intermedia (buffering) de trabajos de impresoras.
5
Final 1
COLA CIRCULAR 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 consultarse, añadirse y eliminarse únicamente desde la cabeza del anillo. 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.
Final 7
8
6
1 Frente
5
2 4
El frente o cabeza es siempre la posición del elemento que precede al primero de la cola y se avanza en el sentido de las aguja del reloj. El final es la posición en donde se hizo la última inserción. Después que se ha producido una inserción, final se mueve circularmente a la derecha. La implementación del movimiento circular se realiza utilizando la teoría de los restos: Mover final adelante= (final +1) % maxtamañocola Mover frente adelante= (frente +1) % maxtamañocola
3 2
Operaciones Básicas Operaciones permitidas en las colas: •
Creación de una cola vacía:
En esta parte del diseño es necesario definir las variables índices, variables de cálculos y operaciones que regirán los métodos. Variables para la cola: Final: El último elemento insertado en la cola Frente: El primer elemento de la cola Max: Máximo de espacios que tiene la Cola Elem: Elemento que se agrega a la cola (Tecleado por el usuario) Pos: determina la posición de un dato consultado Ejemplo en C#: Inicio Cola= new entero [Espacios]; //el arreglo Max = Espacios - 1; cola.length-1 Final = -1; Frente=-1; Fin
•
Función lleno-vacío:
Inicialmente definiremos los métodos que indicarán el estado de la estructura en este caso nos interesa saber cuando la cola está llena y cuando esta vacía para lo cual realizaremos métodos booleanos que determinar si es falso o verdadero el estado consultado -Método para determinar si una cola esta vacía: Inicio Si ((Frente==-1) y (Final==-1)) o (Frente > Final) Inicio retorne Verdadero; sino retorne falso; Fin Si Fin Metodo
-Método determina si esta Llena: Inicio Si (Final==Max) Inicio retorne Verdadero; Sino returne falso; Fin Si Fin Metodo
3
•
Insertar un elemento en la cola:
-Método para insertar elemento en la cola: Inicio Si(!ColaLlena()) Inicio Si(ColaVacia()) Inicio Frente= Frente+1; Final= Final +1; Escriba("Digite elemento");Lea(Elem) Cola[Final]=Elem; Fin Sino Inicio Final=Final+1; Escriba("Digite elemento");Lea(Elem); Cola[Final]=Elem; Fin Fin Sino Escriba("La cola esta llena "); Fin Metodo
Cola:
A B C
un
•
Eliminar un elemento en la cola:
-Método para Eliminar un elemento de la cola: Inicio Entero dato=-1; Entero Aux; Si(!ColaVacia()) // Si la cola no esta vacia entonces. Si (Frente = = Final) Aux=Cola[Frente]; Frente=-1; Final=-1; retornar Aux; Sino Aux=Cola[Frente]; Para (entero i=0;i<= Final; i++) Incio Cola[i]= Cola[i+1]; Fin para Final= Final-1; retornar Aux; Fin si Fin Si Sino Escriba(“La cola esta vacia no hay elementos que eliminar"); retornar Aux; Fin Metodo
Cola:
frente final -Agregando D:
A B C D
frente
final
A B C D
frente final -Eliminando A:
B C D
frente final
4
Aplicación de las colas. Las colas también se utilizan en muchas maneras en los sistemas operativos para planificar el uso de los distintos recursos de la computadora. Uno de estos recursos es la propia CPU (Unidad Central de Procesamiento). Si está trabajando en una sistema multiusuario, cuando le dice a la computadora que ejecute un programa concreto, el sistema operativo añade su petición a su "cola de trabajo".
Cuando su petición llega al frente de la cola, el programa solicitado pasa a ejecutarse. Igualmente, las colas se utilizan para asignar tiempo a los distintos usuarios de los dispositivos de entrada/salida (E/S), impresoras, discos, cintas y demás.
5
6