هياكل البيانات: طابور البيانات (Queues)
بسم الله الرحمن الرحيم
استكمالا لما بدئناه حول هياكل البيانات وكيفية تمثيلها واستعراضها في هذا الموضوع بإذن الله
سنتطرق لنوع من أنواع استعراض البيانات المهمة، سبق وتحدثنا عن stack أما في هذا الموضوع فسنتكلم عن Queues (طابور البيانات).
معنى Queues؟
الـ Queues عبارة عن طابور انتظار هذا الطابور يزداد حجمه بإضافة البيانات في آخره ويقل بإخراج البيانات من الأمام.
المعنى العام شبيه بالطوابير العادية حيث أن من يأتي أولاً يخرج أولا والمتأخر يقف في آخر الصف. إذا على عكس stack
فإن Queues لديه نهاية ومقدمة، النهاية لدخول البيانات والمقدمة لخروجها.
ملاحظة:
* خلال الشرح سأستخدم كلمة طابور للدلالة على Queue.
** كما وسنستخدم الكثير من Func الموجودة بالقوائم لذلك يجب فهم القوائم أولاً.
ماذا نحتاج لإنشاء طابور Queues؟
هناك شبه كبير بين Queues والـ stuck الا أنه هناك أختلاف فجميع الـ func موجودة ولكن مع تغير طفيف:
-إضافة عنصر جديد الى الطابور.
- حذف أول عنصر في الطابور.
- الاستعلام عن بداية الطابور.
- تصفية الطابور Queues (حذف جميع العناصر).
- فحص إذا ما كان الطابور خالٍ.
الأكواد:
لدينا طريقتين لتمثيل Queues أحدها باستخدام المصفوفات والآخرى باستخدام القوائم، وكما اسلفنا
فإن استخدام القوائم يتفوق على المصفوفات من ناحية الوقت والمساحة المستخدمة (يمكن مراجعة الموضوع السابق)
لذلك في شرحنا هذا سنستخدم القوائم الموجودة في: java.util.LinkedList
- انشاء class باسم Queues:
import java.util.LinkedList;
public class Queue {
LinkedList<Integer> queue = new LinkedList<Integer>();
}
هنا قمنا بإنشاء class ليحتوي Queues وقمنا بإنشاء قائمة لحفظ الملفات داخلها.
- تصفية الطابور من العناصر(clear):
public void clear(){
queue.clear();
}
وهنا queue.clear() تصفي القائمة من جميع العناصر فحينها تكون queue خالية من العناصر.
- هل يحتوي الطابور على عناصر (isEmpty):
public boolean isEmpty(){
return queue.isEmpty();
}
هنا المنادي يبعث باستعلام يستفسر فيه اذا كان الطابور خالي أو يوجد به عناصر ويجاب عليه بـ:
- True: في حال خلو الطابور Queue من العناصر.
- False: في حال وجود عناصر في الطابور Queue (على الأقل عنصر واحد).
- اضافة عنصر الى الطابور:
public void enqueue(int a){
queue.add(a);
}
هذه func تستخدم لإضافة عنصر جديد الى الطابور، وكما اشرانا سابقاً فإن العناصر
تضاف الى نهاية الطابور فقط.
- الاستعلام عن أول عنصر في الطابور:
public int firstEl(){
return queue.getFirst();
}
هنا نقوم بالاستعلام عن أول عنصر في الطابور أي العنصر في مقدمة الطابور.
- اخراج أول عنصر في الطابور:
public int dequeue(){
return queue.removeFirst();
}
هنا نقوم باخراج أول عنصر من الطابور ونعيد قيمته الى المنادي.
أين نستخدم Queue:
- تستخدم في تطبيقات خدمة العملاء فعندها نضيف آخر واصل في آخر الطابور ونقوم بخدمة الأول واخراجه من الطابور.
- يتسخدم في ترتيب العمليات في CPU بعض الأحيان يستعان بـ Queue تقدم المهم أولاً.
- الاستعلام عن العناصر في Tree (عبارة عن طريقة لحفظ البيانات كما القوائم والمصفوفات) وبعض عمليتها والتي سنتطرق لها لاحقاً.
ملاحظة:
* ملف الأكواد مدرج في المرفقات( Queue.java ).
اتمنى من الله أن يكون قد وفقني لإصال المعلومة بشكل بسيط.
في حفظ الله
عرض المزيد.. جديد مقالاتي
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !