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

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

متوسط

التعليمات

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

يبدأ المخزن المؤقت الدائري فارغًا وله طول محدد مسبقًا. على سبيل المثال، هذا مخزن من 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 يفتح الرابط في نافذة أو علامة تبويب جديدة
Perl Exercism

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

سجّل في Exercism لتتعلّم وتتقن Perl عبر 5 مفاهيم84 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.

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

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