Escudo ITSL Personaje
Unidad III

3.2 Colas

M.A.T.S.I. Juan Agustín Aragón Guardado
▶ Usa las flechas para avanzar
TecNMInstituto Tecnológico Superior de Lerdo
TecNM · ITSL
3.2 · Definición

¿Qué es una Cola?

Es una estructura de datos lineal que tiene dos puertas de acceso ubicadas en extremos opuestos: una para insertar datos y la otra para eliminarlos.

Puerta de Salida
Puerta de Entrada
←
←
Los datos se insertan uno detrás del otro.
Como la fila del banco: el que entra primero, se atiende primero. 🏦
Avatar
3.2 · Representación gráfica

Representación gráfica de una Cola

La cola tiene dos apuntadores: Frente (puerta de salida) y Final (puerta de entrada).

↓ Frente ↓ Final
E1
E2
E3
E4

Frente → E1 (sale primero)  ·  Final → E4 (entró último)

3.2 · Comportamiento

Comportamiento de una Cola

FIFO

First Input, First Output — el primer dato en entrar es el primer dato en salir.

LILO

Last Input, Last Output — el último dato en entrar es el último en salir. (La misma idea vista al revés — ambos nombres describen a la cola).

Avatar
Al revés que la pila: aquí el primero en llegar es el primero en irse. ⚖️
3.2 · Operaciones básicas

Variables y métodos de una Cola

Max:

Constante de tipo entero que determina el tamaño máximo de la cola.

Frente:

Indica la posición del elemento más cercano a la puerta de salida (el primer elemento de la cola).

Final:

Indica la posición del elemento más cercano a la puerta de entrada (el último elemento de la cola).

/* true si la cola está llena */
1.- SI Final = Max−1 ENTONCES
    Return (true)
  SINO
    Return (false)
2.- {fin de la condición del paso 1}
/* true si la cola está vacía */
1.- SI Frente = −1 ENTONCES
    Return (true)
  SINO
    Return (false)
2.- {fin de la condición del paso 1}
/* inserta un dato al final de la cola */
1.- SI NOT EstaLlena() ENTONCES
  1.1 Final = Final + 1
  1.2 Arreglo[Final] = Dato
  1.3 SI Final = 0 ENTONCES
      1.3.1 Frente = Final
  1.4 {fin de la condición del paso 1.3}
  1.5 Return (true)
  SINO
    Return (false)
2.- {fin de la condición del paso 1}
/* elimina el dato en el Frente */
1.- SI NOT EstaVacia() ENTONCES
  1.1 SI Frente = Final ENTONCES
      1.1.1 Frente = −1
      1.1.2 Final = −1
    SINO
      Frente = Frente + 1
  1.2 {fin de la condición del paso 1.1}
  1.3 Return (true)
  SINO
    Return (false)
2.- {fin de la condición del paso 1}
Pruébalo tú mismo

Simulador: Encolar y Desencolar en acción

Máximo 8 celdas (Max = 8). Observa cómo Frente y Final cambian con cada operación.

🔁 Frente y Final solo vuelven a −1 (la cola "se reinicia") cuando se elimina el último elemento restante — es decir, cuando Frente = Final. Mientras eso no pase, Final nunca retrocede: si llenas las 8 celdas y luego eliminas solo algunas, seguirá marcando "llena" aunque haya celdas libres al frente. Por eso existen las Colas Circulares.
Frente actual:−1 (vacía)
Final actual:−1
¿Está llena?No
¿Está vacía?Sí
Encola tu primer dato.
3.2 · Ejemplos de la vida cotidiana

¿Dónde vemos colas todos los días?

🏦
Sucursal bancaria
Se resuelve con una Cola porque cada cliente toma un turno al llegar y es atendido en ese mismo orden — el primero en llegar (Frente) es el primero en salir. Nadie puede "colarse" sin romper el FIFO.
🎧
Servicio de atención a clientes
Se resuelve con una Cola porque las llamadas o tickets se apilan en el orden en que entran (Final) y se van resolviendo empezando siempre por el más antiguo (Frente).
🛒
Pago en tienda de abarrotes
Se resuelve con una Cola porque la fila física de la caja tiene una sola entrada y una sola salida: el cliente que se formó primero, paga primero.
Avatar
En los 3 casos, el orden de llegada es el orden de salida — eso es FIFO puro. 🎟️
3.2 · Aplicaciones y tipos

Algoritmos que usan Colas

🔎 Búsqueda en Anchura (BFS): al explorar un árbol o grafo nivel por nivel, la cola recuerda el orden en que se deben visitar los siguientes nodos — el opuesto de la búsqueda en profundidad (DFS) que usa pilas.

Tipos de Colas

Estática

Basada en arreglos. Tamaño fijo definido desde el inicio (variable Max).

Dinámica

Basada en listas enlazadas. Puede crecer o disminuir mientras el programa se ejecuta.

Colas Circulares

El sucesor de la última celda es la primera, de tal forma que se optimiza el uso del espacio del arreglo — evita desperdiciar celdas ya liberadas al frente.

Idea que se queda

Dos puertas, un único orden de llegada

Una cola tiene dos puertas de acceso — una para entrar, otra para salir — y siempre respeta el orden FIFO: el primero en llegar es el primero en irse.
TecNM · Instituto Tecnológico Superior de Lerdo · M.A.T.S.I. Juan Agustín Aragón Guardado
En la siguiente presentación construimos una cola real en C# — ¡una fila de atención al cliente! 🎟️
Avatar
1 / 9