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