BUSCAR
INDICE
INDICE DEL TEMA
OBJETIVOS
TEORIA
PALABRAS RESERVADAS
GLOSARIO
EJERCICIOS
RESUELTOS
AUTOEVALUACION
PROPUESTOS
ERRORES
ESTADISTICAS
INICIO
FAQS
LINKS
RECOMIENDANOS
QUIENES SOMOS
MAPA DEL WEB
COLABORAR
Tema 16 Estructura de Datos
Teoría 16.6: Colas de espera

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:

  1. 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.
  2. Si la cola está vacia, asigna newPtr a *headPtr; de no ser así, asigna el apuntador newPtr a (*tailPtr)->nextPtr.
  3. 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:

  1. Asigna (*headPtr)->data a value (guarda los datos)
  2. Asigna *headPtr a tempPtr (tempPtr es utilizado para liberar, mediante free, la memoria no necesaria).
  3. Asigna (*headPtr)->nextPtr a *headPtr (*headPtr apunta ahora al primer nodo en la cola).
  4. Si *headPtr es NULL, asigna NULL a tailPtr.
  5. Libera la memoria a la cual apunta tempPtr.
  6. 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,...