وليد الشهري
وليد الشهري

@Waleed_S_7

9 تغريدة 130 قراءة Aug 06, 2022
من أشهر أنواع هياكل البيانات (data structures)، المكدِّس (stack)، وبما أنّه ينتمي لهياكل البيانات، فهو عبارة عن أسلوب لهيكلة البيانات، وعندما نقول "هيكلة البيانات" فنحن نعني "تنظيم وإدارة عناصر البيانات".
لنأخذ جولةً لطيفة في أرجاء المكدّس (stack)..
(سلسلة)
يُصنَّف المكدِّس ضمن أنواع هياكل البيانات الخطّيّة (linear data structures)، بعبارة أخرى، يقوم المكدِّس بترتيب (arranging) عناصر البيانات في صورة خطّ أو سلسلة واحدة (كل عنصر بجانب الآخر، سواءً مثّلنا ذلك نظريًّا بشكل عمودي أو أفقي أو قُطري، لا يهم).
لاحظ أنّنا نتحدّث عن ترتيب (arranging) عناصر البيانات هنا، ولا علاقة لنا بفرزها أو تصنيفها (sorting)، كالفرز التصاعدي أو التنازلي، فهذا موضوع آخر لا علاقة لهياكل البيانات به.
يعمل المكدِّس وفق آليّة "LIFO"، التي هي اختصار لـ "Last In First Out"، بمعنى أنّ آخر عنصر بيانات يدخل إلى المكدّس، هو أوّل عنصر سيخرج، ثم الآخِر فالآخِر، وهكذا..
وإن شئت، فقل: وفق آليّة "FILO"، اختصارًا لـ "First In Last Out"، ولن تتغيّر فكرة المكدِّس.
سُمِّي بالمكدِّس (stack) نظرًا لتطابق طريقة عمله معنا عندما نتعامل مع ما نكدّسه في الواقع..
لو كانت لديك - مثلًا - مجموعة كراتين لعبوّات المياه متراصّة فوق بعضها، فإنّك لن تستطيع أخذ كرتون منها، ولا إضافة كرتون إليها، إلّا من الأعلى فقط، فالمدخل والمخرج واحد لا غير (LIFO).
من أشهر العمليّات (الدوال) المستخدمَة برمجيًّا مع المكدِّس هي:
- عمليّة "()push":
وتُستَخدَم لإضافة عنصر بيانات إلى المكدِّس.
- عمليّة "()pop":
وتُستَخدَم لحذف عنصر بيانات من المكدِّس.
ولنتذكّر أنّ الإضافة والحذف تحدث من جهة واحدة فقط..
كما يحتوي المكدّس على متغيّر يُدعى "top"، وتكمن مهمّته في التأشير على آخر عنصر دخل إلى المصفوفة، ويجب أن يكون مرنًا، بحيث يشير إلى العنصر الجديد في حال إضافته إلى المصفوفة، وفي حال حذف العنصر الذي يشير إليه "top"، فإنّه سينتقل إلى العنصر الذي تحته كآخر عنصر داخل إلى المصفوفة.
بقي أن نجيب عن سؤال: ما هي التطبيقات الواقعيّة للمكدِّس التي تُثبت لنا مدى أهميته؟!
الأمثلة كثيرة، وسنكتفي باثنين منها:
الأول: أثناء البرمجة، عندما تفتح قوسًا، فأنت بهذا تُدخِله في مكدِّس (push)، وعندما تغلق ذلك القوس، فقد أخرجته من المكدِّس (pop)، وما لم تغلقه، فسوف يظهر خطأ.
الثاني: هي العمليّات التي لا نستغني عنها، والمتمثّلة في: التراجع/التراجع عن التراجع (UNDO/REDO) ، التي نفعّلها عادةً باستخدام لوحة المفاتيح:
UNDO: Ctrl + z.
REDO: Ctrl + y.
انتهت رحلتنا في كوكب "المكدِّس" (stack).

جاري تحميل الاقتراحات...