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

Búfer circular

Intermedia

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 comienza 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 medio del búfer (la ubicación inicial exacta no importa en un búfer circular):

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

Luego supón que se agregan dos elementos más, 2 y 3, que se añaden después 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 del búfer. Los dos elementos eliminados, en este caso, son 1 y 2, y el búfer queda solo con un 3:

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

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

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

Cuando el búfer está lleno, se lanza un error que avisa al cliente que las siguientes escrituras están bloqueadas hasta que se libere un espacio.

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 agregan dos elementos más, A y B, y sobrescriben el 3 y el 4:

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

El 3 y el 4 fueron reemplazados por A y B, lo que hace que 5 sea ahora el dato más antiguo del búfer. Por último, si se eliminan dos elementos, lo que se devolvería es 5 y 6, y el búfer quedaría así:

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

Como hay espacio disponible, si el cliente vuelve a usar la sobrescritura para guardar C y D, entonces se usará el espacio donde antes se guardaron el 5 y el 6, no la ubicació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 ventana o pestaña nueva
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Delphi Pascal Exercism

¿Todo 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.

¡Profundiza en Búfer circular!

En este video 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.