🎯 أهداف التعلم
- أن يتعرف المتعلم على مفهوم هياكل البيانات: التكديس والطوابير.
- أن يميز بين عمليات LIFO (التكديس) و FIFO (الطوابير).
- أن يطبق عمليات الإدراج والحذف في التكديس والطوابير باستخدام خوارزميات.
📝 تمهيد
عندما نتعامل مع البيانات في البرمجة، نحتاج أحياناً إلى تنظيمها بطرق خاصة حسب طبيعة المعالجة. تخيل رصاً من الكتب: عندما تضع كتاباً فوق الآخر، أنت تستخدم بنية “التكديس” (Stack). أما طابور الانتظار في البنك فهو مثال حي على “الطابور” (Queue). هاتان البنيتان هما من أساسيات علم الحاسوب وضرورية لفهم الخوارزميات المتقدمة. في هذا الدرس، نشرح بالتفصيل مفهوم التكديس والطوابير مع أمثلة تطبيقية.
أولاً: التكديس (Stack) — مبدأ LIFO
1. التعريف
التكديس (Stack) هو بنية بيانات خطية تعمل وفق مبدأ “آخر داخل أول خارج” (Last In First Out — LIFO). العنصر الذي يُضاف أخيراً هو أول من يُحذف.
2. العمليات الأساسية
| العملية | الوظيفة | التعقيد |
|---|---|---|
| Push (دفع/إضافة) | إضافة عنصر جديد فوق الرصة (في القمة Top). | O(1) |
| Pop (سحب/حذف) | حذف العنصر الموجود في القمة وإرجاع قيمته. | O(1) |
| Top/Peek (اطّلاع) | الاطلاع على قيمة العنصر في القمة دون حذفه. | O(1) |
| IsEmpty (فحص الفراغ) | التحقق مما إذا كان التكديس فارغاً. | O(1) |
3. مثال — تنفيذ تكديس بمصفوفة (Pseudo-code)
Algorithme: Stack
Variables:
tab[1..N] : Tableau d'entiers
top : Entier ← 0 // مؤشر القمة
Procédure Push(x : Entier)
Si top = N alors Afficher("Stack Overflow")
Sinon
top ← top + 1
tab[top] ← x
FinSi
FinProcédure
Fonction Pop() : Entier
Si top = 0 alors Afficher("Stack Underflow") ; Retourner -1
Sinon
valeur ← tab[top]
top ← top - 1
Retourner valeur
FinSi
FinFonction
ثانياً: الطابور (Queue) — مبدأ FIFO
1. التعريف
الطابور (Queue) هو بنية بيانات خطية تعمل وفق مبدأ “أول داخل أول خارج” (First In First Out — FIFO). العنصر الذي يُضاف أولاً هو أول من يُحذف، مثل طابور الانتظار.
2. العمليات الأساسية
| العملية | الوظيفة | التعقيد |
|---|---|---|
| Enqueue (إدراج) | إضافة عنصر في نهاية الطابور (Rear). | O(1) |
| Dequeue (حذف) | حذف العنصر من بداية الطابور (Front) وإرجاعه. | O(1) |
| Front/Peek (اطّلاع) | الاطلاع على العنصر الأول دون حذفه. | O(1) |
3. تطبيقات التكديس والطوابير
- التكديس: التراجع (Undo) في المحررات، تقييم التعابير الحسابية، التنقل بين الصفحات (Browser History)، استدعاء الدوال (Call Stack).
- الطابور: طباعة المستندات (Printer Queue)، معالجة الطلبات في الخوادم (Task Scheduling)، معالجة البيانات في الشبكات (Buffer).
🏆 تمرين بكالوريا محلول
السؤال: لديك تسلسل العمليات التالي على تكديس فارغ: Push(5), Push(3), Pop(), Push(7), Pop(), Push(9), Push(1), Pop(). ما هو التسلسل النهائي للعناصر المتبقية في التكديس؟
الحل:
1. Push(5) → [5]
2. Push(3) → [5, 3]
3. Pop() → يرجع 3 → [5]
4. Push(7) → [5, 7]
5. Pop() → يرجع 7 → [5]
6. Push(9) → [5, 9]
7. Push(1) → [5, 9, 1]
8. Pop() → يرجع 1 → [5, 9]
التسلسل النهائي (من الأسفل للأعلى): 5, 9
📌 خلاصة الدرس
التكديس (LIFO) والطوابير (FIFO) هما بنيتا بيانات أساسيتان في علم الحاسوب. التكديس يضيف ويحذف من نفس الطرف (القمة)، بينما الطابور يضيف من الخلف ويحذف من الأمام. لكل منهما تطبيقات واسعة في البرمجة وأنظمة التشغيل. فهم هذه الهياكل ضروري لامتحان البكالوريا لشعبة تقني رياضي.
📍 دروس مشابهة:
- خوارزميات الفرز: Bubble Sort و Selection Sort و Insertion Sort – الثالثة ثانوي (بكالوريا) إعلام آلي
- البرمجة الهيكلية والدوال في لغة C++ – الثالثة ثانوي (بكالوريا) إعلام آلي
مدونة التربية و التعليم في الجزائر – دروس، فروض، نتائج امتحانات مدونة التربية والتعليم في الجزائر | تحضير الدروس، فروض واختبارات، نتائج البكالوريا وBEM، مسابقات التوظيف، والتوجيه المدرسي للطلاب وأولياء الأمور.