الدرس 11: المكدّسات والطوابير
لنبدأ من المطبخ: تخيّل كومة من الصحون — تضع الصحن في الأعلى وتأخذه من الأعلى، فيكون آخر ما دخل هو أول ما يخرج. هذا هو 'المكدّس' (stack)، أي LIFO. الآن تخيّل طابور الدفع في المتجر: أول من يصل يُخدَم أولًا — هذا هو 'الطابور' (queue)، أي FIFO. في Python يكون المكدّس عبارة عن list مع append/pop، ويُفضَّ
المكدّس مثل كومة من الصحون: تضع في الأعلى وتأخذ من الأعلى — آخر ما وُضِع هو أول ما يُرفَع. والطابور مثل صف عند صندوق الدفع: من وصل أولًا يُخدَم أولًا. هذا هو الفرق كله — من أيّ طرف تأخذ.
- مكدّس (stack)
- بنية LIFO — آخر ما يدخل أول ما يخرج. في Python: list مع append و pop في الطرف الأخير، وكلاهما O(1).
- طابور (queue)
- بنية FIFO — أول ما يدخل أول ما يخرج. في Python: collections.deque مع append و popleft، وكلاهما O(1).
- deque (طابور ذو طرفين)
- طابور ذو طرفين من collections؛ يتيح الإضافة والإزالة من كلا الطرفين بزمن O(1)، ما يجعله طابور FIFO الفعّال.