مفهوم – stack هو نوع من أنواع هياكل البيانات الهامة فى البرمجة، سنتعرف بشكل تفصيلي خلال هذه المقالة على ما هو ال Stack وكيفية إستخدامه في تخزين البيانات والتعامل معاها.
Stack هي عبارة عن خط انتظار لمجموعة من البيانات، ما يميز هذا الخط بأنه مفتوح من اتجاه واحد فقط، أي أن البيانات تدخل وتخرج من بوابة واحدة. يطلق على stack.
الكلاس Stack يرث من الكلاس Vector و هو يطبق مبدأ LIFO ) Last In First Out ), أي العنصر الذي يدخل في الأخير يخرج في الأول.
شرح stack فى البرمجة
الـ Stack مدعوم من أغلب لغات البرمجة وله الكثير من الامثلة فى العالم الواقعي مثل الكتب او الأوراق فوق بعضها.
مما يعنى ان العنصر فى الاعلى (الذى دخل اخيرًا) يمكن الحصول عليه المرة القادمة Last In First Out او اختصارًا LIFO وتعنى اخر عنصر وضع فى الاستاك يمكن الحصول عليه اوصل عنصر. ويمكننا ملاحظة انه يمكننا الوصول إلى العنصر الاول من جهة واحدة فقط من الاعلى.
ويمكن اجراء عمليتان على Stack وهما Push و Pop وتعنى Push لادخال عنصر جديد فى ال Stack فوق اعلى عنصر و Pop لاخراج اعلى عنصر من Stack والرسمة القادمة توضح الموضوع اكثر.
اقرأ ايضًا: إطارات العمل في البرمجة
خاصية مهمة لل Stack وهى ان اول عنصر وضع فى Stack يخرج اخر عنصر واخر عنصر وضع فى Stack يخرج اول عنصر مما يعنى ان ترتيب دخول العناصر فى Stack عكس ترتيب خروج هذه العناصر.
يمكن تمثيل Stack على ان له عمليتان هما:
Push
Pop
وللاستفادة من Stack ومعرفة حالته يمكن استخدام هذه العمليات :
Peak : لمعرفة اخر عنصر فى Stack دون حذفه
IsFull : لمعرفة ما إذا كان Stack ممتلئ
isEmpty : لمعرفة ما إذا كان Stack فارغ
ومؤشر او Pointer يشير إلى اعلى عنصر فى Stack واعلى عنصر كما نعلم هو الذى يجرى عليه العمليات ام يحذف Pop او يضاف فوقه عنصر Push.
اقرأ ايضًا: الطريقة الصحيحة لتعلم البرمجة
لماذا نستخدم stack
يمكننا استخدام stack في عدة مواقف هذه بعض منها:
– في حالة وجود بيانات ونريد عرضهم بالمعكوس، فعندها ندفع هذه العناصر الى stack وعند إخراجهم فإن آخر عنصر سوف يخرج أولاً.
– تستخدم في لغات البرمجة لتتحقق من وجود تطابق بين الرموز المدخلة (مثلاً للتأكد بأن كل { لديها } ).
– تستخدم لإضافة الأعداد الكبيرة باستخدام بعض الخوارزميات.
اقرأ ايضًا: أخطاء يقع فيها المبرمجين في بداية الطريق
الوظائف التي نحتاجها في stack
push: وهذه العملية تستخدم لإضافة عناصر إلى الـ stack.
pop: تستخدم لإخراج أول عنصر (آخر عنصر اضيف) من stack.
isEmpty: تستخدم لفحص اذا ما كانت stack خالية أو لا.
clear: تستخدم لحذف جميع العناصر في stack.
topEl: تستخدم للاستعلام عن أول عنصر (آخر عنصر مضاف) في stack.
ملاحظة: من الممكن أن تختلف المسميات للـ functions لكن هذه العناصر الأساسية لإنشاء stack
كذلك سنستعين بالقوائم (القائمة أحادية الرابط) لإنشاء stack (يمكننا أن نقوم بإنشائها عن طريق المصفوفات).
شرح رائع