Un buffer circular es un array de capacidad fija con dos números: inicio (dónde está el frente) y longitud (cuántos hay). La posición del final se calcula, dando la vuelta al llegar al borde:
Texto
encolar(x): datos[(inicio + longitud) mod capacidad] ← x; longitud ← longitud + 1desencolar(): x ← datos[inicio]; inicio ← (inicio + 1) mod capacidad; longitud ← longitud − 1
a mod b es el resto de dividir a entre b: 5 mod 4 = 1. Hace que el índice vuelva a 0 al pasar del final.
Con capacidad 4, empiezas vacío (inicio 0). Encolas A, B, C; desencolas dos veces; encolas D y E. Predice dónde cae E antes de mirar la figura de abajo.
Las posiciones 0 y 1 del paso 3 conservan los valores A y B, pero ya no pertenecen a la cola. En el paso 5 el final da la vuelta: es el mismo array.