2. PROF. MARÍA A. GARCÍA COLA Una cola es un tipo especial de lista abierta en la que sólo se pueden insertar nodos en uno de los extremos de la lista y sólo se pueden eliminar nodos en el otro. Además, como sucede con las pilas, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo leído. Este tipo de lista es conocido como lista FIFO (First In First Out), el primero en entrar es el primero en salir, debido a su comportamiento.
3. PROF. MARÍA A. GARCÍA COLA Es evidente, a la vista del gráfico, que una cola es una lista abierta. Así que sigue siendo muy importante que nuestro programa nunca pierda el valor del puntero al primer elemento, igual que pasa con las listas abiertas. Además, debido al funcionamiento de las colas, también deberemos mantener un puntero para el último elemento de la cola, que será el punto donde insertemos nuevos nodos. Teniendo en cuenta que las lecturas y escrituras en una cola se hacen siempre en extremos distintos, lo más fácil será insertar nodos por el final, a continuación del nodo que no tiene nodo siguiente, y leerlos desde el principio, hay que recordar que leer un nodo implica eliminarlo de la cola.
4. PROF. MARÍA A. GARCÍA APLICACIONES Una aplicación en la que las colas figuran como estructura de datos prominente es la simulación por computadora de situaciones del mundo real. 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 el propio CPU. Si está trabajando en un 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 y demás. El sistema operativo mantiene colas para peticiones de imprimir, leer o escribir en cada uno de estas dispositivos.
5. PROF. MARÍA A. GARCÍA Para añadir en la cola con gestión de memoria estática debemos hacer lo siguiente: Verificar que la cola no esté llena Incrementamos a último Insertamos el valor en el vector Para leer en la cola con gestión de memoria estática debemos hacer lo siguiente: Verificar que la cola no esté vacía Incrementamos a primero Mostramos el valor desde el vector. MEMORIA ESTÁTICA
8. PROF. MARÍA A. GARCÍA OPERACIONES BÁSICAS DE UNA COLA Añadir: Inserta un elemento al final de la cola. Leer: Lee y elimina un elemento del principio de la cola. Ambas operaciones se realizan tanto para la gestión de memoria dinámica como para la gestión de memoria estática.
9. PROF. MARÍA A. GARCÍA INSERCIÓN MEMORIA DINÁMICA Las operaciones con colas son muy sencillas, prácticamente no hay casos especiales, salvo que la cola esté vacía. Añadir elemento en una cola vacía: Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además los punteros que definen la cola, primero y ultimo que valdrán NULL: El proceso es muy simple, bastará con que: nodo->siguiente apunte a NULL. Y que los punteros primero y ultimo apunten a nodo.
10. PROF. MARÍA A. GARCÍA INSERCIÓN MEMORIA DINÁMICA Añadir elemento en una cola no vacía: De nuevo partiremos de un nodo a insertar, con un puntero que apunte a él, y de una cola, en este caso, al no estar vacía, los punteros primero y ultimo no serán nulos: El proceso sigue siendo muy sencillo: Hacemos que nodo->siguiente apunte a NULL. Después que ultimo->siguiente apunte a nodo. Y actualizamos ultimo, haciendo que apunte a nodo.
11. PROF. MARÍA A. GARCÍA ELIMINAR MEMORIA DINÁMICA Leer un elemento en una cola con más de un elemento: Usaremos un puntero a un nodo auxiliar: Hacemos que nodo apunte al primer elemento de la cola, es decir a primero. Asignamos a primero la dirección del segundo nodo de la pila: primero->siguiente. Guardamos el contenido del nodo para devolverlo como retorno, recuerda que la operación de lectura en colas implican también borrar. Liberamos la memoria asignada al primer nodo, el que queremos eliminar.
12. PROF. MARÍA A. GARCÍA ELIMINAR MEMORIA DINÁMICA Leer un elemento en una cola con un solo elemento: También necesitamos un puntero a un nodo auxiliar: Hacemos que nodo apunte al primer elemento de la pila, es decir a primero. Asignamos NULL a primero, que es la dirección del segundo nodo teórico de la cola: primero->siguiente. Guardamos el contenido del nodo para devolverlo como retorno, recuerda que la operación de lectura en colas implican también borrar. Liberamos la memoria asignada al primer nodo, el que queremos eliminar. Hacemos que ultimo apunte a NULL, ya que la lectura ha dejado la cola vacía.
13. PROF. MARÍA A. GARCÍA INTERPRETA MI MENSAJE Estaba un día muy y luego paso un gran amig@ y me dijo no estés hoy es un día agradable como para estar me cuenta un chiste que me muero de la , y le dije gracias con un eres muy amable.