|
Una
cola de espera es similar a una línea de pagos en un
supermercado, la primera persona en la línea es atendida
primero, y los otros clientes entran únicamente en la línea
por la parte final y esperan para ser atendidos. Los nodos de la
cola son eliminados de la parte delantera o cabeza de la cola, y
son incluídos o insertos únicamente en la parte trasera
de la cola (estructura FIFO, first-in, first-out). Las operaciones
de insertar y retirar se conocen como enqueue y dequeue.
La
función enqueue recibe desde el main tres argumentos:
la dirección del apuntador a la cabeza de la cola, la dirección
del apuntador a la parte trasera de la cola, y el valor a ser inserto
en la cola. La función está formada de tres pasos:
- Para
crear un nuevo nodo: llama a malloc, asigna a newPtr
la posición asignada de memoria, asigna el valor que se
va a insertar en la cola a newPtr->data y asigna NULL
a newPtr-> nextPtr.
- Si
la cola está vacia, asigna newPtr a *headPtr;
de no ser así, asigna el apuntador newPtr a (*tailPtr)->nextPtr.
- Asigna
newPtr a *tailPtr.
La
función dequeue recibe desde el main tres argumentos:
la dirección del apuntador a la cabeza de la cola, la dirección
del apuntador a la parte trasera de la cola, y retira el primer
nodo de la cola. La función está formada de seis pasos:
- Asigna
(*headPtr)->data a value (guarda los datos)
- Asigna
*headPtr a tempPtr (tempPtr es utilizado para liberar,
mediante free, la memoria no necesaria).
- Asigna
(*headPtr)->nextPtr a *headPtr (*headPtr apunta
ahora al primer nodo en la cola).
- Si
*headPtr es NULL, asigna NULL a tailPtr.
- Libera
la memoria a la cual apunta tempPtr.
- Regresa
value al llamador (la función de dequeue es llamada
desde main, p.e.)
Las
colas de espera tienen múltiples aplicaciones, el
colas de impresión, colas de cómputo en computadores
con un sólo procesador, en redes de computadoras los paquetes
de información también esperan en colas,...
|
|