46 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| 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) |