المسارات
/
Delphi Pascal
Delphi Pascal
/
التمارين
/
المخزن المؤقت الدائري
المخزن المؤقت الدائري

المخزن المؤقت الدائري

متوسط

التعليمات

المخزن المؤقت الدائري، أو المخزن المؤقت الدوري، أو المخزن المؤقت الحلقي، هو بنية بيانات تستخدم مخزنًا مؤقتًا واحدًا ثابت الحجم كما لو كان موصولًا من طرف إلى طرف.

يبدأ المخزن المؤقت الدائري فارغًا وله طول محدد مسبقًا. على سبيل المثال، هذا مخزن مؤقت من 7 عناصر:

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

افترض أن 1 كُتب في منتصف المخزن المؤقت (لا يهم موقع البداية الدقيق في المخزن المؤقت الدائري):

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

ثم افترض أنه أُضيف عنصران آخران، 2 و3، وقد أُلحقا بعد 1:

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

إذا حُذف عنصران من المخزن المؤقت بعد ذلك، فستُحذف أقدم القيم داخله. العنصران المحذوفان في هذه الحالة هما 1 و2، ما يترك المخزن المؤقت بالعنصر 3 فقط:

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

إذا كان المخزن المؤقت يحتوي على 7 عناصر فإنه يكون ممتلئًا تمامًا:

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

عندما يمتلئ المخزن المؤقت سيُرتفع خطأ، ينبّه العميل إلى أن عمليات الكتابة الإضافية محظورة حتى يتحرر مكان.

عندما يمتلئ المخزن المؤقت، يمكن للعميل أن يختار الكتابة فوق أقدم البيانات بكتابة قسرية. في هذه الحالة، يُضاف عنصران آخران، A وB، فيكتبان فوق 3 و4:

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

استُبدل 3 و4 بـ A وB، ما يجعل 5 أقدم البيانات في المخزن المؤقت الآن. وأخيرًا، إذا حُذف عنصران فإن ما سيُرجَع هو 5 و6، لينتج المخزن المؤقت:

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

لأن هناك مساحة متاحة، إذا استخدم العميل الكتابة فوق مرة أخرى لتخزين C وD فسيُستخدم المكان الذي كان يخزّن 5 و6 سابقًا وليس موقع 7 و8. لا يزال 7 أقدم عنصر والمخزن المؤقت ممتلئ مرة أخرى.

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

المصدر

ويكيبيديايفتح الرابط في نافذة أو علامة تبويب جديدة
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Delphi Pascal Exercism

مستعد لبدء المخزن المؤقت الدائري؟

سجّل في Exercism لتتعلّم وتتقن Delphi Pascal عبر 76 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.

تعمّق في المخزن المؤقت الدائري!

في هذا الفيديو نلقي نظرة على المخزن المؤقت الدائري: ما هو، وأين يُستخدم، وتطبيقاته المختلفة، بما في ذلك الطوابير والمصفوفات الثابتة والديناميكية وبنى البيانات غير القابلة للتغيير وتطبيق ممتع قائم على الوكلاء.