الـStack: أهم Data Structure للمبرمجين

x32x01
  • بواسطة x32x01 ||
  • #1

فهم ال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 داخلي تلقائيًا.
 
التعديل الأخير:

المواضيع ذات الصلة

x32x01
الردود
0
المشاهدات
712
x32x01
x32x01
x32x01
الردود
1
المشاهدات
784
x32x01
x32x01
x32x01
الردود
0
المشاهدات
375
x32x01
x32x01
x32x01
الردود
0
المشاهدات
315
x32x01
x32x01
x32x01
الردود
0
المشاهدات
236
x32x01
x32x01
الوسوم : الوسوم
algorithms call stack computer science data structure lifo pop programming basics push recursion stack
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟

آخر المشاركات

إحصائيات المنتدى
المواضيع
2,388
المشاركات
2,601
أعضاء أكتب كود
574
أخر عضو
الياس
عودة
أعلى