- بواسطة 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 داخلي تلقائيًا.
التعديل الأخير: