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