
- بواسطة x32x01 ||
فهم الStack: أهم Data Structure في البرمجة
الـStack من أكتر الData Structure اللي بنستخدمها يوميًا في كل التطبيقات والمواقع اللي بنتصفحها

النهاردة هنتكلم عن Stack، الدوال الأساسية فيه، وأهميته في البرمجة والبرامج اللي بنستخدمها كل يوم

الفكرة العامة: نفهم Stack بمثال الكتب
تخيل معايا مجموعة كتب محطوطة فوق بعضها، وإنت عايز تضيف كتاب جديد أو تاخد كتاب منهم:- لما تحط الكتاب فوق مجموعة الكتب - الطريقة الوحيدة هي تحطه فوق الكتب اللي موجودة بالفعل.
- لما تاخد كتاب - مفيش غير إنك تاخد آخر كتاب حطّيته فوق المجموعة (يعني LIFO).
- اللي حطيته آخر حاجة هو أول حاجة هتطلعها بعدين.
يعني إيه Stack في الـData Structure؟
- الـStack هو الطريقة اللي بترتب بيها البيانات زي المثال بتاع الكتب.
- البيانات اللي بنخزنها في الـStack هي "العناصر" اللي زي الكتب.
- الـStack بيشتغل على مبدأ LIFO (Last In First Out) - آخر عنصر يدخل هو أول عنصر يخرج.
- لازم يكون فيه مؤشر اسمه Top بيورينا أعلى عنصر موجود في الـStack.
الدوال الأساسية في الـStack
- Push: معناها "دفع"، بنستخدمها لما نضيف عنصر جديد للـStack.
Python:stack.append(new_item) # بنضيف العنصر الجديد فوق آخر عنصر top = len(stack) - 1 # نحدث مؤشر Top
- Pop: بنستخدمها لما نحذف أو ناخد آخر عنصر من الـStack.
Python:item = stack.pop() # بنحذف آخر عنصر ونرجعه top = len(stack) - 1 # نحدث مؤشر Top
إزاي نعمل Stack؟
- Array: ثابت الحجم (Fixed size) - طول الـStack مايتغيرش بعد ما تحدده.
- Linked List: ديناميكي (Dynamic size) - تقدر تزود أو تقلل العناصر بحرية.
استخدامات Stack في التطبيقات والمواقع اليومية
- تصفح الإنترنت: لما بتفتح صفحات وبتدوس زرار الرجوع، الصفحات بتتحفظ في Back Stack وبتخرج بالترتيب اللي فتحته.
- تطبيقات الكتابة: Ctrl + Z للتراجع عن آخر خطوة - كمان بيتخزن في Stack.
- التطبيقات البرمجية: استدعاء الدوال العودية (Recursion) بيستخدم Stack داخلي.
مثال عملي في Python
Python:
# إنشاء Stack باستخدام List
stack = []
# Push عناصر
stack.append("كتاب 1")
stack.append("كتاب 2")
stack.append("كتاب 3")
# Pop عنصر
item = stack.pop()
print("تم إخراج:", item)
print("الـStack الحالي:", stack)
مثال عملي في JavaScript
JavaScript:
// إنشاء Stack باستخدام Array
let stack = [];
// Push عناصر
stack.push("كتاب 1");
stack.push("كتاب 2");
stack.push("كتاب 3");
// Pop عنصر
let item = stack.pop();
console.log("تم إخراج:", item);
console.log("الـStack الحالي:", stack);
نصائح مهمة عند استخدام Stack
- دايمًا حدث مؤشر Top بعد كل عملية Push أو Pop.
- لو عايز Stack ديناميكي استخدم Linked List بدل Array.
- ممكن تستخدم Stack في أي حالة محتاجة تتبع آخر عنصر دخل أول حاجة تخرجها.
- في البرمجة العودية، كل استدعاء بيتم تخزينه في Stack داخلي تلقائيًا.
التعديل الأخير: