المكدس وقائمة الانتظار هما هيكلان مهمان للبيانات يتم استخدامهما في البرمجة لتنظيم البيانات وإدارتها. على الرغم من أن كلاهما يمكنه تخزين العناصر ومعالجتها ، إلا أن لهما اختلافات كبيرة في كيفية عملهما والوصول إلى البيانات.
يعمل المكدس على مبدأ"آخر خروج— أولا". هذا يعني أنه يتم إضافة العناصر وإزالتها من المكدس على جانب واحد فقط ، وهو ما يسمى "قمة الرأس". يتم وضع عنصر جديد دائما في الجزء العلوي من المكدس ، ويتم الوصول إلى العناصر فقط من الأعلى. تسمح لك هذه البنية بتنفيذ آلية للتراجع عن الإجراءات (التراجع) أو أداء الوظائف بترتيب عكسي.
قائمة الانتظار ، على العكس من ذلك ، تعمل على مبدأ "أولا في— أولا."تتم إضافة العناصر إلى نهاية قائمة الانتظار باستخدام عملية إنكيو واسترجاعها باستخدام عملية ديكيو من بداية قائمة الانتظار. هيكل البيانات هذا مناسب لتنفيذ المهام حيث يكون من الضروري الحفاظ على ترتيب العناصر ، على سبيل المثال ، في معالجة الاستعلامات أو أداء المهام بالتتابع.
أحد الاختلافات الرئيسية بين المكدس وقائمة الانتظار هو الترتيب الذي تتم به معالجة العناصر. في المكدس ، يتم تنفيذ العمليات بالترتيب العكسي لإضافة العناصر ، وفي قائمة الانتظار ، بنفس الترتيب الذي تمت إضافتها به.
- هياكل البيانات: المكدس وقائمة الانتظار
- ما هو كومة وكيف يعمل?
- ما هو طابور وكيف يعمل?
- مقارنة المكدس وقائمة الانتظار: الاختلافات الرئيسية
- سؤال وجواب
- ما هي المبادئ الأساسية التي تميز كومة من قائمة الانتظار?
- ما هي العمليات التي يمكن القيام بها مع المكدس?
- كيف يتم إضافة عنصر إلى المكدس?
- كيف يتم إزالة عنصر من المكدس?
- ما هي العمليات التي يمكن إجراؤها مع قائمة الانتظار?
- كيف يتم إضافة عنصر إلى قائمة الانتظار?
هياكل البيانات: المكدس وقائمة الانتظار
في البرمجة ، هناك هياكل بيانات مختلفة تسمح لنا بتخزين البيانات ومعالجتها وإدارتها بسهولة. اثنان من هياكل البيانات التقليدية هذه هما المكدس وقائمة الانتظار.
المكدس عبارة عن مجموعة مرتبة من العناصر التي تحدث فيها الإضافات والحذف من طرف واحد فقط ، وهو ما يسمى "الجزء العلوي من المكدس". يمكن للمستخدم الوصول فقط إلى الجزء العلوي من المكدس.
يمكن مقارنة أداء المكدس بمجموعة من اللوحات-يمكنك إضافة لوحات جديدة فقط من الأعلى ، وإزالتها فقط من الأعلى. وتسمى هذه الميزة من المكدس" آخر في ، أولا خارج " (ليفو — آخر في ، أولا خارج).
عملية كومة مهمة هي إضافة عنصر إلى قمة الرأس (دفع) وإزالة عنصر من قمة الرأس (فرقعة). يمكنك أيضا إجراء عمليات للتحقق من فراغ المكدس (فارغ) والحصول على عنصر من الأعلى دون إزالته (نظرة خاطفة).
قائمة الانتظار هي مجموعة من العناصر التي تحدث فيها الإضافات في أحد طرفيها (يتم وضع عناصر جديدة في المجموعة) ، وتحدث عمليات الحذف في الطرف الآخر (يتم حذف العناصر الموجودة في المجموعة الأطول).
يمكن تخيل قائمة الانتظار كقائمة انتظار في متجر أو عند الخروج ، حيث تتم إضافة عملاء جدد إلى نهاية قائمة الانتظار ، ويتم تقديم الخدمة من العميل الأول الذي انضم إلى قائمة الانتظار (فيفو — أولا ، أولا).
العمليات الرئيسية مع قائمة الانتظار هي إضافة عنصر إلى نهاية قائمة الانتظار (إنكيو) وإزالة عنصر من بداية قائمة الانتظار (ديكوي). يمكنك أيضا إجراء عمليات للتحقق من فراغ قائمة الانتظار (فارغة) والحصول على عنصر من بداية قائمة الانتظار دون حذفه (نظرة خاطفة).
المكدس وقائمة الانتظار هي هياكل بيانات بسيطة وشائعة يمكن استخدامها في العديد من الخوارزميات ومهام البرمجة.
ما هو كومة وكيف يعمل?
المكدس عبارة عن بنية بيانات تعمل على مبدأ "آخر دخول ، أول خروج" أو ليفو (آخر دخول ، أول خروج). هذا يعني أنه يتم إضافة العناصر وإزالتها من طرف واحد فقط من المكدس ، وهو ما يسمى الرأس.
في المكدس ، سيكون العنصر المضاف الأخير دائما هو العنصر المحذوف الأول. عند إضافة عنصر جديد إلى المكدس ، يتم وضعه في الأعلى ، ولا يمكن الوصول إلى العناصر الأخرى حتى يتم حذف العنصر العلوي. تسمى إضافة عنصر جديد "التراص" ، وتسمى إزالة عنصر"الإزالة من المكدس".
العملية الرئيسية التي يمكن إجراؤها باستخدام المكدس هي وضع عنصر في الجزء العلوي من المكدس واستخراج العنصر من الأعلى.
يمكن تمثيل المكدس باستخدام مصفوفة عادية ، حيث يتم الوصول إلى العناصر فقط من خلال الجزء العلوي من المكدس. في بعض الأحيان يتم استخدام قائمة مرتبطة أيضا ، مما يسمح لك بتغيير حجم المكدس ديناميكيا.
تستخدم الأكوام على نطاق واسع في العديد من مجالات البرمجة ، بما في ذلك معالجة التعبير والبرمجة الوظيفية وإدارة ذاكرة التطبيق.
ما هو طابور وكيف يعمل?
قائمة الانتظار هي بنية بيانات حيث تتم إضافة العناصر إلى النهاية وحذفها من البداية. قائمة الانتظار تعمل على مبدأ" أولا في ، أولا خارج " (فيفو — أولا في أول خارج).
دعونا ننظر إلى مثال على قائمة انتظار في الحياة الحقيقية-يمكن أن يكون طابور عادي من الناس في أحد البنوك أو في السينما. عندما يتم إضافة شخص جديد ، وقال انه يحصل على نهاية قائمة الانتظار ، وعندما تتم إزالة شخص ، وقال انه يترك بداية قائمة الانتظار.
عادة ما يتم تنفيذ قائمة الانتظار باستخدام مصفوفة أو قائمة مرتبطة. لنلق نظرة على مثال لتنفيذ قائمة انتظار قائمة على الصفيف. للقيام بذلك ، إنشاء صفيف واثنين من المؤشرات: سيشير المرء إلى بداية قائمة الانتظار (فهرس العنصر الأول) ، والثاني سيشير إلى نهاية قائمة الانتظار (فهرس العنصر الأخير).
عمليات قائمة الانتظار:
- قائمة الانتظار-إضافة عنصر إلى نهاية قائمة الانتظار. بعد الإضافة ، يزيد المؤشر إلى نهاية قائمة الانتظار بمقدار 1.
- ديكو-حذف عنصر من بداية قائمة الانتظار. بعد الحذف ، يزيد المؤشر إلى بداية قائمة الانتظار بمقدار 1.
- نظرة خاطفة-الحصول على عنصر من بداية قائمة الانتظار دون حذفه.
لنلق نظرة على مثال للعمل مع قائمة انتظار قائمة على الصفيف:
| العمليات | قائمة الانتظار |
| قائمة الانتظار (1) | [1] |
| قائمة الانتظار (2) | [1, 2] |
| قائمة الانتظار (3) | [1, 2, 3] |
| ديكيو() | [2, 3] |
| نظرة خاطفة() | [2, 3] |
في المثال أعلاه ، أضفنا أولا العناصر 1 و 2 و 3 إلى نهاية قائمة الانتظار باستخدام عملية قائمة الانتظار. ثم أزلنا العنصر من بداية قائمة الانتظار باستخدام عملية ديكو. وأخيرا ، حصلنا على العنصر من بداية قائمة الانتظار باستخدام عملية نظرة خاطفة.
وبالتالي ، فإن قائمة الانتظار هي مجموعة مرتبة من العناصر ، حيث تحدث الإضافة في النهاية وتحدث الإزالة من البداية.
مقارنة المكدس وقائمة الانتظار: الاختلافات الرئيسية
المكدس وقائمة الانتظار هما هيكلان رئيسيان للبيانات يستخدمان على نطاق واسع في البرمجة. وهي تمثل طرقا مختلفة لتنظيم البيانات وإدارتها. على الرغم من أن المكدس وقائمة الانتظار يشتركان في بعض الخصائص المشتركة ، إلا أن لهما أيضا اختلافات مهمة.
| المكدس | قائمة الانتظار |
|---|---|
|
|
والفرق الرئيسي بين كومة وقائمة انتظار هو الترتيب الذي يتم إضافة العناصر وإزالتها. في المكدس ، سيكون آخر عنصر تمت إضافته هو أول عنصر يتم حذفه ، وفي قائمة الانتظار ، سيكون العنصر المضاف الأول هو أول عنصر يتم حذفه.
المكدس وقائمة الانتظار لها تطبيقاتها الخاصة في الحياة الحقيقية والبرمجة. يمكن تخيل المكدس على أنه كومة من الألواح ، حيث يتم وضع لوحة جديدة في الأعلى ، ويتم الإزالة من الأعلى. يمكن تخيل قائمة الانتظار على أنها قائمة انتظار في متجر حيث يكون العميل الأول الذي تم إدخاله هو أول من يتم تقديمه.
يعتمد استخدام المكدس أو قائمة الانتظار على المهمة والمتطلبات المحددة. إذا كان من الضروري تنفيذ خوارزمية حيث يكون الترتيب العكسي لعناصر المعالجة مطلوبا ، فسيكون المكدس خيارا أكثر ملاءمة. إذا كان من الضروري معالجة العناصر بالترتيب الذي تصل به ، فمن الأفضل استخدام قائمة انتظار.
سؤال وجواب
ما هي المبادئ الأساسية التي تميز كومة من قائمة الانتظار?
الفرق الرئيسي بين المكدس وقائمة الانتظار هو ترتيب الوصول إلى العناصر. يستخدم المكدس مبدأ آخر في أول الخروج (ليفو) ، وهذا هو ، يتم استخراج العناصر في ترتيب عكسي من إضافتها. في قائمة الانتظار ، على العكس من ذلك ، يتم تطبيق مبدأ "أولا في ، أولا خارج" (أولا—في-أولا-خارج ، فيفو) ، حيث يتم استخراج العناصر في نفس الترتيب الذي تم إضافتها.
ما هي العمليات التي يمكن القيام بها مع المكدس?
يمكن إجراء العمليات التالية باستخدام المكدس: إضافة عنصر (دفع) ، حذف عنصر (البوب) ، وعرض العنصر العلوي (أعلى) ، والتحقق من الفراغ (إيسمبتي). تضيف عملية الدفع عنصرا إلى الجزء العلوي من المكدس ، وتزيل عملية البوب العنصر العلوي من المكدس وتعيده ، وتقوم العملية العلوية ببساطة بإرجاع العنصر العلوي من المكدس دون حذفه ، وتتحقق عملية إيسمبتي ما إذا كان المكدس فارغ.
كيف يتم إضافة عنصر إلى المكدس?
يتم تنفيذ إضافة عنصر إلى المكدس بواسطة عملية دفع. في هذه الحالة ، يتم وضع العنصر أعلى المكدس. إذا كان المكدس فارغا ، يصبح العنصر الجديد عنصره الوحيد. خلاف ذلك ، يصبح العنصر الجديد هو العنصر العلوي ، ويرتبط العنصر العلوي السابق به. وبالتالي ، يصبح العنصر الجديد متاحا فقط بعد حذف جميع العناصر المضافة مسبقا.
كيف يتم إزالة عنصر من المكدس?
يتم تنفيذ إزالة عنصر من المكدس بواسطة عملية البوب. يؤدي هذا إلى إزالة العنصر العلوي من المكدس وإرجاع قيمته. إذا كان المكدس فارغا ، فإن عملية البوب لا تفعل شيئا. بعد حذف عنصر ، يصبح العنصر العلوي السابق العنصر العلوي الجديد في المكدس.
ما هي العمليات التي يمكن إجراؤها مع قائمة الانتظار?
العمليات التالية لا يمكن أن يؤديها مع قائمة الانتظار: إضافة عنصر (إنكيو) ، حذف عنصر (ديكيو) ، وعرض العنصر الأول (الجبهة) ، والتحقق من الفراغ (إيسمبتي). تضيف عملية إنكيو عنصرا إلى نهاية قائمة الانتظار ، وتزيل عملية ديكيو العنصر الأول من قائمة الانتظار وتعيده ، وتعيد العملية الأمامية العنصر الأول من قائمة الانتظار دون حذفها ، وتتحقق عملية إيسيمبتي مما إذا كانت قائمة الانتظار فارغة.
كيف يتم إضافة العنصر إلى قائمة الانتظار?
يتم تنفيذ إضافة عنصر إلى قائمة الانتظار بواسطة عملية قائمة الانتظار. في هذه الحالة ، يتم وضع العنصر في نهاية قائمة الانتظار. إذا كانت قائمة الانتظار فارغة ، يصبح العنصر الجديد هو العنصر الوحيد. بخلاف ذلك ، تتم إضافة عنصر جديد بعد العنصر الأخير في قائمة الانتظار ويصبح العنصر التالي بعد العنصر الجديد مرجعا له. وبالتالي ، يصبح العنصر الجديد متاحا فقط بعد حذف جميع العناصر المضافة مسبقا.