الفرق بين Stack و Queue

يتم تعريف كل من Stack وقائمة الانتظار من خلال مجموعة متسلسلة من الكائنات المنظمة بترتيب معين في بنية البيانات بناءً على بعض مكافئات الحياة الواقعية. كلاهما عبارة عن هياكل بيانات خطية تستخدم لتخزين واسترجاع عناصر البيانات بكفاءة ، باستثناء مبدأ العمل. Stack عبارة عن قائمة مرتبة من العناصر حيث يتم إجراء جميع عمليات الإدراج والحذف في نفس النهاية ، في حين أن قائمة الانتظار هي عكس Stack الذي يكون مفتوحًا في كلا الطرفين مما يعني أنه يتم استخدام أحد الطرفين لإدخال البيانات بينما يتم إزالة الآخر البيانات. الفرق الرئيسي بين الاثنين هو آلية عملهم.

ما هو Stack؟

Stack عبارة عن بنية بيانات خطية تُستخدم لتنظيم البيانات بطريقة معينة بحيث يمكن استخدامها بكفاءة. تحتاج الآلات إلى توجيهات لإنجاز المهام البسيطة والمعقدة في شكل أوامر. وبالمثل ، يمكن تنظيم البيانات بعدة طرق مختلفة ، وتعتبر Stack واحدة من أكثر هياكل البيانات كفاءة. إنها بنية بيانات مجردة تشبه Stack المادي حيث يتم تنظيم الكائنات بترتيب معين ، استنادًا إلى آلية ما يرد أخيرًا يخرج أولاً (LIFO) مما يعني أن العنصر الأخير الذي تمت إضافته يجب الوصول إليه أولاً والعكس صحيح . التطبيق الأكثر شيوعًا لهيكل بيانات Stack هو التراجع أو خوارزمية بحث العمق أولاً.

ما هو Queue؟

قائمة الانتظار هي أيضًا بنية بيانات خطية ، تشبه إلى حد ما بنية بيانات Stack ، باستثناء أنها مفتوحة في كلا الطرفين. إنها مجموعة متسلسلة من الأشياء التي تشبه طابور من الناس. على عكس Stack ، فإنه يعتمد على مبدأ الوارد أولاً يصرف أولاً (FIFO) مما يعني أنه يمكن الوصول إلى العنصر المضاف الأقدم أولاً والعكس صحيح. في قائمة الانتظار ، يتم استخدام أحد الطرفين لإدراج العناصر والطرف الآخر لإزالة العناصر. مثل مجموعة من الأشخاص ، يتم وضع كيانات جديدة في الخلف وتتم إزالة الكيانات التي تم خدمتها بالفعل من المقدمة. يُسمح بعمليتين في قائمة الانتظار: قائمة الانتظار و dequeue. تشير Enqueue إلى إضافة عناصر في الخلف وتعني dequeue إزالة العناصر من المقدمة.

الفرق بين Stack و Queue

معنى Stack and Queue

Stack هو بنية بيانات أساسية ، وهو نوع بيانات مجردة يتم تمثيله ببنية خطية تشبه Stack المادي حيث يمكن إضافة الكائن في أي وقت ولكن يمكن إزالته والتي تمت إضافتها أخيرًا. بعبارات بسيطة ، يتم إدراج وحذف الكائنات في بنية بيانات Stack في أحد طرفيه وهو الجزء العلوي من Stack. قائمة الانتظار تشبه إلى حد ما Stack باستثناء أنها مفتوحة في كلا الطرفين – أحد الطرفين لإدراج الكائن والآخر لإزالة الكائن مما يعني أنه يمكن الوصول إلى الكائنات المخزنة أولاً.

مبدأ العمل في Stack and Queue

يعتبر كل من Stack وقائمة الانتظار من أنواع البيانات المجردة غير البدائية في بنية البيانات بمثابة مجموعة من الكائنات يتم تخزين الكيانات فيها بترتيب معين. Stack عبارة عن حاوية للكائنات حيث يتم تخزين الكيانات وإزالتها بناءً على مبدأ العمل الذي يرد أخيرًا يخرج أولاً (LIFO) مما يعني أنه يمكن تخزين الكائنات واستردادها في وقت واحد. قائمة الانتظار ، من ناحية أخرى ، هي مجموعة من الكائنات حيث يتم تخزين الكيانات وإزالتها وفقًا لمبدأ الوارد أولاً يصرف أولاً (FIFO).

هيكل Stack و Queue

يشير اسم Stack إلى تشبيه الهيكل حيث يتم وضع العناصر فوق بعضها البعض مثل مكدس مثل علبة البسكويت. يتم استخدام أحد الأطراف لوضع الأشياء وإزالتها من Stack مما يسهل اختيار كائن من الأعلى ، بينما يجعل من الصعب في نفس الوقت الوصول إلى الكائن الأخير الذي يتطلب إزالة عناصر متعددة واحدة تلو الأخرى بدءًا من الأعلى. قائمة الانتظار هي عكس الأكوام بمعنى أن الأشياء الجديدة توضع في الخلف وتتم إزالتها من الأمام تمامًا مثل الكتاب.

عمليات

هناك عمليتان أساسيتان يمكن إجراؤهما على Stack: الدفع ، والذي يضيف عنصرًا أساسيًا إلى Stack وإذا كان Stack ممتلئًا ، فهو شرط تجاوز التدفق ، والانبثاق ، والذي أزال العنصر الأحدث من Stack الفارغ ، يشير إلى شرط Underflow. هناك عملية نظرة خاطفة إضافية مرتبطة بStack والتي تتيح لك الوصول إلى العنصر في الجزء العلوي دون تعديل Stack. هناك مبدأان أساسيان مرتبطان بقائمة الانتظار: قائمة الانتظار التي تعني إضافة أشياء إلى الخلف ، و dequeue الذي يشير إلى إزالة الأشياء من المقدمة.

تطبيقات Stack و Queue

أحد أكثر التطبيقات الأساسية لهيكل بيانات Stack هو خوارزمية البحث عن العمق أولاً ، والتي تستند إلى فكرة التراجع المستخدمة بشكل أساسي للبحث في رسم بياني أو هيكل بيانات شجرة. يمكن استخدامه أيضًا للمترجم / نظام التشغيل لمعالجة استدعاءات الوظائف أو لتنفيذ الوظائف العودية. التطبيق الأكثر شيوعًا لهيكل بيانات قائمة الانتظار هو جدولة وحدة المعالجة المركزية أو جدولة القرص أو بحث العمليات. من الأمثلة الواقعية على بنية بيانات قائمة الانتظار قائمة انتظار الأشخاص نفسها حيث يتم تقديم الشخص الذي يقف أولاً في الصف أولاً.

Stack مقابل قائمة الانتظار: مخطط المقارنة


ملخص Stack vs Queue

كل من Stack وقائمة الانتظار عبارة عن هياكل بيانات مجردة غير بدائية يتم تعريفها على أنها مجموعة من الكائنات المنظمة بترتيب معين في الكمبيوتر ، ولكن مع مبادئ عمل مختلفة. بينما يرتبط كلاهما بتنظيم البيانات وتخزينها ، إلا أنهما يفعلان ذلك بشكل مختلف تمامًا. Stack عبارة عن هيكل بيانات أساسي يعتمد على مبدأ LIFO ويسمى أيضًا باسم آخر ما يرد أولاً يخرج مما يعني أن العنصر المضاف أخيرًا يجب الوصول إليه أولاً أو FILO مما يعني أن العنصر الأول في سيتم الوصول إليه أخيرًا. على العكس من ذلك ، تستند قائمة الانتظار إلى مبدأ FIFI (الوارد أولاً يخرج أولاً) مما يعني أن العنصر الأقدم يجب الوصول إليه أولاً.

المصدر

أضف تعليق