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

x32x01
  • بواسطة 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 داخلي تلقائيًا.
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
175
x32x01
x32x01
x32x01
الردود
0
المشاهدات
431
x32x01
x32x01
x32x01
الردود
1
المشاهدات
494
x32x01
x32x01
x32x01
الردود
1
المشاهدات
445
x32x01
x32x01
x32x01
الردود
0
المشاهدات
500
x32x01
x32x01
x32x01
الردود
0
المشاهدات
509
x32x01
x32x01
x32x01
الردود
0
المشاهدات
456
x32x01
x32x01
x32x01
الردود
0
المشاهدات
414
x32x01
x32x01
x32x01
الردود
0
المشاهدات
424
x32x01
x32x01
x32x01
الردود
0
المشاهدات
45
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,831
المشاركات
2,028
أعضاء أكتب كود
464
أخر عضو
رشن7
عودة
أعلى