---
title: Queues
localeTitle: ذيول
---
## طوابير

قائمة الانتظار هي أول بنية بيانات أول (OutO) (FIFO). تستخدم العديد من الخوارزميات قوائم انتظار في جوهرها لتحسين الأداء.

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

1.  قائمة انتظار بسيطة (أو قائمة انتظار)
2.  قائمة انتظار دائري
3.  طابور الأولوية
4.  Dequeue (Double Ended Queue)

إذا استطعت أن تفهم الطابور البسيط (الذي سيشار إليه من هنا باسم "قائمة الانتظار") ، فسيكون كل الآخرين سهلا بنفس القدر ، مع القليل من التعديلات.

معظم العمليات الشائعة المتاحة في قائمة الانتظار هي ،

1.  إضافة / عرض - لإدراج عنصر في نهاية قائمة الانتظار.
2.  Remove / Poll - إزالة عنصر من بداية قائمة الانتظار.
3.  Peek - إرجاع العنصر في بداية قائمة الانتظار ولكن لن يتم إزالته.
4.  Size / Count - لإرجاع عدد العناصر الموجودة حاليًا في قائمة الانتظار.
5.  IsEmpty - تحقق مما إذا كانت قائمة الانتظار فارغة أم لا.

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

\`\` \`جافا سكريبت  
var Queue = function () { var queue = \[\]؛ var front = 0؛ var back = 0؛ إرجاع { isEmpty: function () { عودة الجبهة> = العودة || queue.length === 0؛ }، add: function (elem) { / \* يمكنك أيضًا إجراء queue.push (elem) في JavaScript. هذا كيف يفعلون ذلك بلغات أخرى \* / قائمة الانتظار \[العودة ++\] = elem؛ }، remove: function () { إذا (! this.isEmpty ()) { قائمة انتظار العودة \[front ++\]؛ // أو queue.shift () } else { خطأ جديد ("Queue is Empty.")؛ } }، نظرة خاطفة: الوظيفة () { إذا (! this.isEmpty ()) { قائمة انتظار العودة \[front\]؛ } } } }؛

var queue = new Queue ()؛ console.log (queue.isEmpty ())؛ // صحيح queue.add (1)؛ queue.add (2)؛ console.log (queue.remove ())؛ // 1 console.log (queue.peek ())؛ // 2 console.log (queue.remove ())؛ // 2 console.log (queue.remove ())؛ // استثناء \`\` \`

#### تطبيقات

*   محاكاة
*   الجدولة (جدولة المهام ، جدولة الأقراص)
*   إدارة الموارد المشتركة
*   لوحة المفاتيح المخزن المؤقت
*   اتساع البحث أولا
*   للتعامل مع الازدحام في الشبكة

#### معلومات اكثر:

*   [مزيد من المعلومات عن طوابير - GeeksForGeeks](http://www.geeksforgeeks.org/queue-data-structure/)
*   [حل التحديات باستخدام قوائم الانتظار - Hackerrank](https://www.hackerrank.com/domains/data-structures/queues)
*   [HackerRank الأكوام و الطوابير الفيديو](https://www.youtube.com/watch?v=wjI1WNcIntg)