Stacks and Queues هي ميزات في لغة البرمجة تساعد المستخدم في حل أي مشاكل تنشأ في البرنامج.
على الرغم من تصنيف كل من المكدس وقائمة الانتظار إلى حد كبير ضمن هياكل البيانات غير البدائية ، إلا أنهما يختلفان عن بعضهما البعض في عدة جوانب.
الوجبات السريعة الرئيسية
- تقوم الأكوام بتنفيذ بنية بيانات Last-In-First-Out (LIFO) ، حيث تتم إزالة العنصر الأحدث أولاً ، بينما تتبع قوائم الانتظار بنية First-In-First-Out (FIFO) ، مع إزالة العنصر الأقدم أولاً.
- في الأكوام ، تحدث عمليات الإدخال والإزالة في الأعلى ، بينما في قوائم الانتظار ، يحدث الإدخال في الخلف والإزالة في المقدمة.
- تعد الأكوام أكثر ملاءمة للمواقف التي تتطلب انعكاسًا أو تراجعًا ، بينما تعد قوائم الانتظار أكثر ملاءمة للسيناريوهات التي تتضمن الجدولة أو الحفاظ على ترتيب العناصر.
مكدس مقابل كيو
الفرق بين Stack و Queue هو أنه في حالة المكدس ، يتم حذف العنصر من طرف واحد ، ويتم إضافة العنصر في القائمة المرتبة نفسها ، والمعروفة باسم TOS. من ناحية أخرى ، في حالة قائمة الانتظار ، يتم حذف العناصر وإدراجها من نفس النهاية.
يمكن وصف المكدس بأنه بنية بيانات خطية يمكن اعتبارها غير بدائية.
من أحد الأطراف، تتم إزالة العنصر المحدد مسبقًا، وتضاف ميزات جديدة إلى هذه القائمة المرتبة والتي تُعرف باسم TOS أو الجزء العلوي من المكدس. يمكن للمكدس أن يعرض أداء العمليات الأساسية مثل PUSH وPOP.
تعتبر قائمة الانتظار أيضًا النوع غير البدائي لبنية البيانات الخطية. إنها مجموعة من العناصر المتشابهة مع بعضها البعض.
له طرفان ، نهايات نادرة وواجهة أمامية ، حيث يتم إدراج العناصر أو حذفها ، على التوالي. يمكن لقائمة الانتظار إجراء العمليات الأساسية مثل قائمة الانتظار وإلغاء الانتظار.
جدول المقارنة
معلمات للمقارنة | كومة | طابور |
---|---|---|
مبدأ العمل | يعتبر مبدأ العمل المرتبط بالمكدس على أنه LIFO أو أخيرًا في النوع الأول من القائمة. | في بنية بيانات المكدس هذه ، يمكن إدراج العناصر باستخدام واحد وحذفها باستخدام نفس النهاية. |
استخدام المؤشرات والعمليات | عدد المؤشرات المستخدمة في المكدس واحد. العمليات التي يتم إجراؤها في بنية البيانات هذه هي الدفع والاندفاع. | عدد المؤشرات المستخدمة في قائمة الانتظار هو اثنان. العمليات التي يتم إجراؤها في بنية البيانات هذه هي قائمة الانتظار وإلغاء الصف. |
الهيكلية | في حالة قائمة الانتظار ، تهتم النهاية الخلفية بالإدراج ، وتهتم الواجهة الأمامية بحذف العناصر. | على عكس قائمة الانتظار ، لا ترتبط بنية بيانات المكدس بالمتغيرات. التنفيذ المرتبط به أكثر وضوحًا. |
المتغيرات | تحتوي بنية البيانات هذه على متغيرات مثل قائمة الانتظار ذات الأولوية وقائمة الانتظار الدائرية وقائمة الانتظار ذات النهاية المزدوجة. تنفيذه معقد نسبيا. | فحص الشرط الفارغ المرتبط بالمكدس أعلى == - 1. فحص الحالة الكاملة للمكدس أعلى == الحد الأقصى - 1. |
فحص الحالة | فحص الشرط الفارغ أمامي == -1 || أمامي ++ خلفي + 1 وفحص الحالة الكاملة خلفي == حد أقصى - 1. | فحص الشرط الفارغ أمامي == -1 || أمامي ++ خلفي + 1 ، وفحص الحالة الكاملة خلفي == الحد الأقصى - 1. |
ما هو ستاك؟
سيتم حذف آخر عنصر تمت إضافته إلى المكدس عند تنفيذ عملية الإدراج أو الحذف من الأعلى. وبسبب هذا الغرض، يُعرف هذا النوع من القوائم باسم "الداخل الأخير يخرج أولاً" أو LIFO.
هناك العديد من تطبيقات المكدس ، مثل التراجع في معالج الكلمات ، والجهاز الظاهري لجافا ، وتحليل المترجم ، ولغة PostScript للطابعات ،
زر الرجوع لمتصفح الويب، ويتضمن استدعاءات الوظائف في المترجمين، وغيرها. يمكن تنفيذ المكدس بطريقتين مثل التنفيذ الثابت والتنفيذ الديناميكي.
مكدس مطور في تنفيذ ثابت بمساعدة المصفوفات.
على الرغم من أن التنفيذ الثابت معروف بأنه سهل ، إلا أنه يسمح بالإعلان عن حجم المكدس فقط أثناء تصميم البرنامج ، وبعد ذلك لا يمكن التحقق من الطول.
لا يعتبر التنفيذ الثابت ذو كفاءة عالية مرتبطة باستخدام الذاكرة. من ناحية أخرى، يُعرف التنفيذ الديناميكي أيضًا بتمثيل القائمة المرتبطة.
تُستخدم المؤشرات لتنفيذ بنية البيانات بنوع المكدس.
على سبيل المثال، يمكن أن نقول أنه عندما يتمزق غلاف البسكويت من أحد طرفيه، يمكن إخراج البسكويت من هناك (فرقعة)، ويمكن إعادة البسكويت مرة أخرى (الدفع).
ما هي قائمة الانتظار؟
يعتبر هذا ما يرد أولاً يصرف أولاً أو نوع القائمة أولاً يصرف أولاً. يمكن تقسيم تنفيذ قائمة الانتظار إلى تنفيذ ثابت وديناميكي.
في التنفيذ الثابت ، عند استخدام المصفوفات لتنفيذ قائمة انتظار ، يجب التأكد مسبقًا من العدد المحدد للعناصر التي سيتم تخزينها في السطر.
يتم ذلك حيث يجب التأكد من حجم المصفوفة قبل المعالجة أو التصميم. يتكون الجزء الأمامي من قائمة الانتظار من بداية الصفيف والجزء الخلفي من الموقع النهائي لقائمة الانتظار.
يحتوي التطبيق الديناميكي على تمثيل مرتبط حيث يوجد حقل البيانات.
تصبح ميزة التمثيل المرتبط واضحة عندما يكون عنصرًا مطلوبًا ليتم إدراجه أو حذفه في منتصف المجموعات التي تشتمل على جوانب أخرى.
يمكن تطبيق قائمة الانتظار بعدة طرق، مثل تحليل حركة المرور، ومخازن البيانات، وتحديد عدد الصرافين المطلوبين في السوبر ماركت،
تخصيص الطلبات على الموارد المشتركة مثل المعالجات أو الطابعات، والنقل غير المتزامن للبيانات، والعديد من الأمور الأخرى.
على سبيل المثال ، قد نقول أنه عندما ننتظر الحصول على الخدمة ، فإننا نشكل قائمة انتظار للحصول على الخدمات التي يمكن اعتبارها قائمة انتظار.
الاختلافات الرئيسية بين Stack و Queue
- من المعروف أن مبدأ عمل المكدس هو نوع القائمة LIFO، في حين أن مبدأ عمل قائمة الانتظار هو نوع القائمة FIFO.
- استخدام المؤشرات في حالة المكدس واحد ، وفي حالة قائمة الانتظار ، يكون اثنان.
- في حالة المكدس ، يمكن إدراج العناصر وحذفها من نفس النهاية. في حالة قائمة الانتظار ، ترتبط النهاية الخلفية بالإدمان وترتبط الواجهة الأمامية بحذف العناصر.
- لا يحتوي Stack على متغيرات ، بينما تحتوي قائمة الانتظار على متغيرات.
- يعد تنفيذ المكدس أبسط ، لكن تنفيذ قائمة الانتظار أكثر تعقيدًا من تنفيذ المكدس.
كنت أعرف كل هذا بالفعل. المقال لا يقدم لي أي جديد.
أعتقد أن المقالة تقدم نظرة عامة موجزة عن المكدسات وقوائم الانتظار في علوم الكمبيوتر.
تساعد الأمثلة الواردة في المقالة حقًا في فهم مفهوم المكدسات وقوائم الانتظار.
نعم اوافق. الأمثلة العملية تجعل الأمر أسهل للفهم.
إنها تجديد جيد لأساسيات برمجة الكمبيوتر.
لقد وجدت هذه المقالة مفيدة للغاية. من الجيد دائمًا معرفة المزيد عن أساسيات علوم الكمبيوتر.
لا أستطيع أن أصدق أنني قضيت وقتي في قراءة هذا المقال. إنها مجرد أشياء أساسية في علوم الكمبيوتر ولا شيء جديد.
لم أكن أدرك الاختلافات المعقدة بين المكدس وقائمة الانتظار. انها مثيرة للاهتمام للغاية.
نعم، هذه المقالة تقوم بعمل ممتاز في توضيح الاختلافات بينهما.