Rutas
/
Delphi Pascal
Delphi Pascal
/
Ejercicios
/
Búfer circular
Búfer circular

Búfer circular

Media

Instrucciones

Un búfer circular, búfer cíclico o búfer en anillo es una estructura de datos que usa un único búfer de tamaño fijo como si estuviera conectado de extremo a extremo.

Un búfer circular empieza vacío y con una longitud predefinida. Por ejemplo, este es un búfer de 7 elementos:

[ ][ ][ ][ ][ ][ ][ ]

Supón que se escribe un 1 en el centro del búfer (la ubicación inicial exacta no importa en un búfer circular):

[ ][ ][ ][1][ ][ ][ ]

Después, supón que se añaden dos elementos más, el 2 y el 3, que se colocan a continuación del 1:

[ ][ ][ ][1][2][3][ ]

Si después se eliminan dos elementos del búfer, se eliminan los valores más antiguos que hay dentro de él. En este caso, los dos elementos eliminados son el 1 y el 2, con lo que el búfer se queda solo con el 3:

[ ][ ][ ][ ][ ][3][ ]

Si el búfer tiene 7 elementos, está completamente lleno:

[5][6][7][8][9][3][4]

Cuando el búfer está lleno, se lanzará un error que avisará al cliente de que las escrituras posteriores están bloqueadas hasta que se libere una posición.

Cuando el búfer está lleno, el cliente puede optar por sobrescribir los datos más antiguos con una escritura forzada. En este caso, se añaden dos elementos más, A y B, que sobrescriben el 3 y el 4:

[5][6][7][8][9][A][B]

El 3 y el 4 han sido sustituidos por A y B, con lo que el 5 pasa a ser ahora el dato más antiguo del búfer. Por último, si se eliminan dos elementos, lo que se devolvería es el 5 y el 6, con lo que el búfer queda así:

[ ][ ][7][8][9][A][B]

Como hay espacio disponible, si el cliente vuelve a usar la sobrescritura para almacenar C y D, se usará el espacio donde antes se guardaron el 5 y el 6, y no la posición del 7 y el 8. El 7 sigue siendo el elemento más antiguo y el búfer vuelve a estar lleno.

[C][D][7][8][9][A][B]

Fuente

WikipediaEl enlace se abre en una nueva ventana o pestaña
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Delphi Pascal Exercism

¿Listo para empezar Búfer circular?

Regístrate en Exercism para aprender y dominar Delphi Pascal con 76 ejercicios y mentoría humana real, todo gratis.

¡Análisis en profundidad de Búfer circular!

En este vídeo echamos un vistazo al búfer circular: qué es, dónde se usa y distintas implementaciones, incluidas colas, arrays estáticos y dinámicos, estructuras de datos inmutables y una divertida implementación basada en agentes.