Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

هياكل البيانات - الطابور

11.044 visualizaciones

Publicado el

فصل من كتاب هياكل البيانات يتناول بالتفصيل موضوع الطابور

Publicado en: Ciencias

هياكل البيانات - الطابور

  1. 1. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 1 ‫الطابور‬Queue ‫المقدمة‬ ‫او‬ ‫سلعة‬ ‫لشراء‬ ‫طوابير‬ ‫هيئة‬ ‫على‬ ‫يقفون‬ ‫الناس‬ ‫فيها‬ ‫نرى‬ ‫التي‬ ‫الحاالت‬ ‫من‬ ‫الكثير‬ ‫هناك‬ ‫اليومية‬ ‫حياتنا‬ ‫في‬ ‫عمل‬ ‫انجاز‬,‫خدمة‬ ‫الي‬ ‫غالبا‬ ‫موجودة‬ ‫هي‬..‫وليس‬ ‫الباص‬ ‫صعود‬ ‫الى‬ ‫السوبرماركت‬ ‫في‬ ‫الفواتير‬ ‫دفع‬ ‫من‬ ‫والمصارف‬ ‫البنوك‬ ‫في‬ ‫انتهاءا‬.‫الخ‬ ‫مجهز‬ ‫يكون‬ ‫فعندما‬‫يصل‬ ‫ان‬ ‫قبل‬ ‫عميل‬ ‫خدمة‬ ‫انجاز‬ ‫على‬ ‫قادر‬ ‫غير‬ ‫دمة‬ ‫الطابور‬ ‫الى‬ ‫نحتاج‬ ‫ذاك‬ ‫فعند‬ ‫الالحق‬ ‫العميل‬.‫الخدمة‬ ‫مقدم‬ ‫يخدم‬ ‫عندما‬ ‫مايحدث‬ ‫تخيل‬(‫في‬ ‫المحاسب‬ ‫مثال‬ ‫البنك‬)‫وصول‬ ‫لزمن‬ ‫مراعاة‬ ‫دون‬ ‫قبله‬ ‫وصلوا‬ ‫ربما‬ ‫الذين‬ ‫االخرين‬ ‫قبل‬ ‫عشوائي‬ ‫بشكل‬ ‫ما‬ ‫شخص‬ ‫الخدمة‬ ‫هذه‬ ‫عل‬ ‫للحصول‬ ‫االشخاص‬. ‫ق‬ ‫تشبه‬‫وائم‬‫الحاسبات‬ ‫في‬ ‫االنتظار‬‫طوابير‬‫هيئة‬ ‫على‬ ‫الناس‬ ‫يقف‬ ‫عندما‬ ‫اليومية‬ ‫الحياة‬ ‫في‬ ‫االنتظار‬‫طابور‬ ،ً‫ال‬‫أو‬ ‫يخدم‬ ً‫ال‬‫أو‬ ‫يأتي‬ ‫من‬ ‫مبدأ‬ ‫كالهما‬ ‫في‬ ‫ويطبق‬ ،‫عمل‬ ‫إنجاز‬ ‫أو‬ ‫سلعة‬ ‫لشراء‬‫نفس‬ ‫يطبق‬ ‫الحاسب‬ ‫وفي‬ ‫المبدأ‬. ‫شكل‬(1:)‫لطابور‬ ‫حقيقي‬ ‫نموذج‬‫عمال‬ ‫الطابور‬ ‫ماهو‬ ‫مشابهة‬ ‫الطابور‬‫االمام‬ ‫من‬ ‫والحذف‬ ‫الطابور‬ ‫خلف‬ ‫من‬ ‫البيانات‬ ‫االضافة‬ ‫امكانية‬ ‫ماعدا‬ ‫للمكدس‬.‫كتابة‬ ‫برنامج‬‫كتابة‬ ‫من‬ ‫صعوبة‬ ‫اكثر‬ ‫هو‬ ‫الطابور‬‫برنامج‬‫المكدس‬,‫االعداد‬ ‫من‬ ‫اثنين‬ ‫على‬ ‫نحافظ‬ ‫الطابور‬ ‫في‬ ‫للطابور‬ ‫الخلفية‬ ‫النهاية‬ ‫يحدد‬ ‫والثاني‬ ‫البداية‬ ‫طرف‬ ‫يحدد‬ ‫واحد‬ ‫الصحيحة‬. ‫الطابور‬‫لهيا‬ ‫مثال‬ ‫هو‬‫الخطية‬ ‫البيانات‬ ‫كل‬,‫التجميع‬ ‫في‬ ‫البيانات‬ ‫ان‬ ‫بحيث‬ ‫البيانات‬ ‫لتجميع‬ ‫خاص‬ ‫نوع‬ ‫هو‬ ‫الترتيب‬ ‫هذا‬ ‫على‬ ‫تجرى‬ ‫ان‬ ‫الممكن‬ ‫من‬ ‫التي‬ ‫العمليات‬ ‫مع‬ ‫يتناسب‬ ‫بترتيب‬ ‫عليها‬ ‫المحافظة‬ ‫يتم‬,‫هذه‬ ‫من‬ ‫الطابور‬ ‫بداية‬ ‫من‬ ‫البيانات‬ ‫وحذف‬ ‫الطابور‬ ‫نهاية‬ ‫الى‬ ‫بيانات‬ ‫اضافة‬ ‫العمليات‬.‫الطابور‬ ‫يجعل‬ ‫وهذا‬‫هيكل‬ ‫اوال‬ ‫يخرج‬ ‫اوال‬ ‫الداخل‬ ‫على‬ ‫يعتمد‬ ‫بياني‬(First In First Out (FIFO))‫النظام‬ ‫هذا‬ ‫ان‬FIFO‫يعني‬ ‫اوال‬ ‫يخرج‬ ‫الطابور‬ ‫الى‬ ‫يضاف‬ ‫الذي‬ ‫االول‬ ‫العنصر‬ ‫ان‬,‫جميع‬ ‫ان‬ ‫يعني‬ ‫جديد‬ ‫عنصر‬ ‫اضافة‬ ‫فان‬ ‫ولذلك‬ ‫قبل‬ ‫اضيفت‬ ‫التي‬ ‫العناصر‬‫الجديد‬ ‫العنصر‬ ‫قبل‬ ‫تخرج‬ ‫ان‬ ‫يجب‬ ‫ه‬.
  2. 2. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 2 ‫الطابور‬ ‫على‬ ‫كمثال‬‫تقف‬ ‫التي‬ ‫السيارات‬‫االخرى‬ ‫خلف‬ ‫واحدة‬‫البنزين‬ ‫محطة‬ ‫في‬‫بالوقود‬ ‫التزود‬ ‫لغرض‬, ‫محل‬ ‫في‬ ‫فاتورة‬ ‫دفع‬ ‫على‬ ‫بالدور‬ ‫االنتظار‬,‫االنتظار‬‫بالدور‬‫تذكرة‬ ‫لقطع‬,‫نقاط‬ ‫في‬ ‫الطابور‬ ‫في‬ ‫االنتظار‬ ‫االمني‬ ‫التفتيش‬...‫الخ‬. ‫فان‬ ‫الحاسبات‬ ‫مجال‬ ‫وفي‬‫الطابور‬‫من‬ ‫يعتبر‬‫ال‬‫هي‬‫ا‬‫كل‬‫ال‬‫معروف‬‫ة‬‫انظ‬ ‫في‬ ‫جدا‬‫الحاسوب‬ ‫وشبكات‬ ‫التشغيل‬ ‫مة‬. ‫و‬‫طويل‬ ‫ليصبح‬ ‫كبرا‬ ‫ينمو‬ ‫ان‬ ‫ممكن‬ ‫الطابور‬,‫ان‬ ‫الممكن‬ ‫من‬ ‫واحد‬ ‫عنصر‬ ‫فقط‬ ‫ولكن‬‫الوقت‬ ‫في‬ ‫يدخل‬ ‫يخرج‬ ‫واحد‬ ‫شخص‬ ‫او‬ ‫واحد‬ ‫عنصر‬ ‫وكذلك‬ ‫الواحد‬‫يخدم‬ ‫او‬‫الواحد‬ ‫الوقت‬ ‫في‬,‫ويتبع‬‫هيكلية‬ ‫الطابور‬ ‫اوال‬ ‫خارج‬ ‫اوال‬ ‫الداخل‬.‫الطابور‬ ‫هما‬ ‫الطوابير‬ ‫من‬ ‫نوعين‬ ‫وهناك‬‫الدائري‬ ‫والطابور‬ ‫الخطي‬. ‫الطابور‬ ‫تطبيقات‬ ‫بعض‬: 1.‫تستلم‬ ‫او‬ ‫حاسوب‬ ‫من‬ ‫اكثر‬ ‫من‬ ‫طباعة‬ ‫اوامر‬ ‫تستلم‬ ‫طابعة‬ ‫مثل‬ ‫مشتركة‬ ‫مصادر‬ ‫لدينا‬ ‫يكون‬ ‫عندما‬ ‫بالطباعة‬ ‫امر‬ ‫من‬ ‫اكثر‬ ‫واحد‬ ‫حاسوب‬ ‫من‬,‫بينما‬ ‫تنفيذة‬ ‫سيتم‬ ‫واحد‬ ‫طباعة‬ ‫امر‬ ‫فان‬ ‫الحالة‬ ‫هذه‬ ‫في‬ ‫للتنفيذ‬ ‫دورها‬ ‫تنتظر‬ ‫االخرى‬ ‫االوامر‬,‫وي‬‫وصولها‬ ‫اسبقية‬ ‫حسب‬ ‫تنفيذها‬ ‫تم‬(‫لخوارزمية‬ ‫وفقا‬ ‫او‬ ‫بالتنفيذ‬ ‫محددة‬.) 2.‫قليل‬ ‫وقت‬ ‫بفارق‬ ‫ملف‬ ‫من‬ ‫اكثر‬ ‫على‬ ‫بالماوس‬ ‫سريع‬ ‫ضغط‬ ‫وعملنا‬ ‫الحاسوب‬ ‫على‬ ‫ماعملنا‬ ‫اذا‬ ‫جدا‬,‫الوقت‬ ‫بعض‬ ‫الى‬ ‫يحتاج‬ ‫االول‬ ‫الملف‬ ‫وكان‬‫عملة‬ ‫النجاز‬,‫باالنتظار‬ ‫سيبقى‬ ‫الثاني‬ ‫الملف‬ ‫فان‬ ‫و‬ ‫االول‬ ‫الملف‬ ‫اكمال‬ ‫لحين‬‫بالطابور‬ ‫يكون‬ ‫عندها‬. 3.‫مختلفة‬ ‫انجاز‬ ‫سرع‬ ‫لها‬ ‫المختلفة‬ ‫االجهزة‬ ‫فان‬ ‫الحاسوب‬ ‫داخل‬ ‫في‬,‫نسبة‬ ‫بطيئة‬ ‫االدخال‬ ‫اجهزة‬ ‫مثال‬ ‫توقف‬ ‫الى‬ ‫يؤدي‬ ‫االجهزة‬ ‫هذة‬ ‫بين‬ ‫البيانات‬ ‫واستالم‬ ‫ارسال‬ ‫عملية‬ ‫فان‬ ‫لذلك‬ ‫المعالجة‬ ‫الجهزة‬ ‫البطيئة‬ ‫االجهزة‬ ‫من‬ ‫البيانات‬ ‫النتظار‬ ‫السريعة‬ ‫االجهزة‬ ‫بعض‬,‫مث‬ ‫في‬‫هناك‬ ‫فان‬ ‫الحالة‬ ‫هذة‬ ‫ل‬‫عدة‬ ‫الطابور‬ ‫استخدام‬ ‫احدها‬ ‫بالسرعة‬ ‫الفرق‬ ‫لمعالجة‬ ‫طرق‬. 4.‫تلبية‬ ‫ينتظرون‬ ‫االشخاص‬ ‫لتجعل‬ ‫الطابور‬ ‫تستخدم‬ ‫ان‬ ‫تتطلب‬ ‫التلفون‬ ‫اتصاالت‬ ‫مراكز‬ ‫انظمة‬ ‫المجانية‬ ‫وخصوصا‬ ‫لهم‬ ‫الخدمة‬ ‫وتوفير‬ ‫طلباتهم‬. 5.‫طابور‬ ‫ضمن‬ ‫تكون‬ ‫ان‬ ‫ممكن‬ ‫االنترنيت‬ ‫شبكة‬ ‫على‬ ‫المختلفة‬ ‫الطلبات‬,‫في‬ ‫وخصوصا‬router. 6.‫المقاطعة‬ ‫اوامر‬ ‫لتلبية‬ ‫الطوابير‬ ‫استخدام‬ ‫الى‬ ‫تحتاج‬ ‫الحاسوب‬ ‫داخل‬ ‫للبرامج‬ ‫المقاطعة‬ ‫طلبات‬ ‫متقاربة‬ ‫اوقات‬ ‫او‬ ‫واحد‬ ‫بوقت‬ ‫تصل‬ ‫والتي‬ ‫المختلفة‬. 7.‫للمستخدم‬ ‫الكثيرة‬ ‫الطلبات‬ ‫لتلبية‬ ‫مختلفة‬ ‫مراحل‬ ‫في‬ ‫الطوابير‬ ‫تستخدم‬ ‫عام‬ ‫بشكل‬ ‫التشغيل‬ ‫انظمة‬. ‫الخطية‬ ‫الطوابير‬ ‫المستقرة‬ ‫البيانات‬ ‫هياكل‬ ‫حينها‬ ‫وتدعى‬ ‫كمصفوفة‬ ‫ماديا‬ ‫تمثل‬ ‫ان‬ ‫ويمكن‬static data structure ‫المصفوفات‬ ‫صفات‬ ‫جميع‬ ‫سترث‬ ‫وعندها‬,‫و‬ ‫موصولة‬ ‫كقائمة‬ ‫تمثل‬ ‫ان‬ ‫الممكن‬ ‫من‬ ‫او‬‫بهذا‬‫هياكل‬ ‫تدعى‬ ‫الديناميكية‬ ‫البيانات‬dynamic data structure‫خواص‬ ‫جميع‬ ‫وستمتلك‬‫وصفات‬‫الموصو‬ ‫القوائم‬‫لة‬, ‫يحدث‬ ‫الحذف‬ ‫بينما‬ ‫الطابور‬ ‫ذيل‬ ‫في‬ ‫تحدث‬ ‫االضافة‬ ‫عمليات‬ ‫فان‬ ‫الطابور‬ ‫تمثيل‬ ‫طريقة‬ ‫عن‬ ‫النظر‬ ‫وبغض‬ ‫الطابور‬ ‫راس‬ ‫في‬. ‫النهاية‬ ‫مؤشر‬ ‫واالخر‬ ‫البداية‬ ‫مؤشر‬ ‫احدهما‬ ‫مؤشرين‬ ‫على‬ ‫الطابور‬ ‫ويحتوي‬.
  3. 3. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 3 ‫شكل‬(2:)‫الخطي‬ ‫للطابور‬ ‫العام‬ ‫الهيكل‬ ‫تنفيذ‬‫االنتظار‬ ‫قوائم‬(‫الطابور‬): ‫قوائم‬ ‫تنفيذ‬ ‫يتطلب‬‫الحاس‬ ‫على‬ ‫االنتظار‬‫و‬‫البيانات‬ ‫يستوعب‬ ‫الذاكرة‬ ‫في‬ ‫حيز‬ ‫حجز‬ ‫ب‬‫في‬ ‫وضعها‬ ‫المراد‬ ‫الطابور‬ ‫لحجم‬ ‫ووفقا‬ ‫الطابور‬,‫يتولى‬ ‫مؤشرين‬ ‫وجود‬ ‫مع‬‫المؤشر‬‫رأس‬ ‫إلى‬ ‫اإلشارة‬ ‫األول‬‫بداية‬ ‫او‬‫موقع‬ ‫االنتظار‬Head Pointer‫االنتظار‬ ‫موقع‬ ‫نهاية‬ ‫إلى‬ ‫اآلخر‬ ‫يشير‬ ‫بينما‬(‫الق‬ ‫ذيل‬‫ائمة‬)TailPointer ‫ذيل‬ ‫مؤشر‬ ‫يشير‬ ‫بينما‬ ‫مشغول‬ ‫موقع‬ ‫أول‬ ‫عنوان‬ ‫إلى‬ ‫القائمة‬ ‫رأس‬ ‫مؤشر‬ ‫ويشير‬‫عنوان‬ ‫إلى‬ ‫القائمة‬‫اخر‬ ‫موقع‬‫مشغول‬‫للقائمة‬ ‫المخصصة‬ ‫المعنونة‬ ‫المواقع‬ ‫كتلة‬ ‫في‬.‫ويوضح‬‫الشكل‬)(‫قوائم‬ ‫مع‬ ‫التعامل‬ ‫حركة‬ ‫االنتظار‬. ‫شكل‬(3:)‫ال‬ ‫الطابور‬ ‫في‬ ‫والحذف‬ ‫االضافة‬ ‫عمليات‬‫خطي‬ ‫مميزات‬‫بالطابور‬ ‫المصفوفة‬ ‫استخدام‬: ‫بسيط‬ ‫تنفيذها‬. ‫االعالن‬ ‫عند‬ ‫الطابور‬ ‫حجم‬ ‫يحدد‬ ‫ان‬ ‫يجب‬. ‫الذاكر‬ ‫بمواقع‬ ‫فقدان‬ ‫ويكون‬ ‫جيد‬ ‫بشكل‬ ‫اليستخدم‬ ‫ان‬ ‫ممكن‬ ‫الفضاء‬‫ة‬‫من‬ ‫قليل‬ ‫عدد‬ ‫استخدام‬ ‫عند‬ ‫العناصر‬‫للطابور‬ ‫كبير‬ ‫حجم‬ ‫عن‬ ‫االعالن‬ ‫مع‬.
  4. 4. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 4 ‫الع‬ ‫عدد‬ ‫من‬ ‫اكثر‬ ‫اضافية‬ ‫عناصر‬ ‫اضافة‬ ‫اليمكن‬‫التي‬ ‫ناصر‬‫الطابور‬ ‫حجم‬ ‫بها‬ ‫حدد‬(‫حجم‬ ‫المصفوفة‬.) ‫مميزات‬‫الموصولة‬ ‫القوائم‬ ‫باستخدام‬ ‫الطابور‬ ‫تنفيذ‬: ‫جديد‬ ‫عنصر‬ ‫لكل‬ ‫الي‬ ‫بشكل‬ ‫ذاكرة‬ ‫تخصيص‬. ‫بعضها‬ ‫مع‬ ‫الطابور‬ ‫عناصر‬ ‫ربط‬‫المؤشرات‬ ‫بواسطة‬. ‫االخير‬ ‫العنصر‬ ‫على‬ ‫يؤشر‬ ‫والثاني‬ ‫بالطابور‬ ‫االول‬ ‫العنصر‬ ‫على‬ ‫يؤشر‬ ‫واحد‬ ‫مؤشرين‬ ‫استخدام‬ ‫بالطابور‬. ‫الذاكرة‬ ‫استهالك‬ ‫لترشيد‬ ‫جيدة‬ ‫طريقة‬ ‫تعتبر‬. ‫الطابور‬ ‫الى‬ ‫عنصر‬ ‫اضافة‬ ‫خوارزمية‬: 1.‫او‬ ‫يتم‬‫للطابور‬ ‫النهاية‬ ‫مؤشر‬ ‫فحص‬ ‫ال‬,‫للطابور‬ ‫االخير‬ ‫الموقع‬ ‫على‬ ‫يؤشر‬ ‫كان‬ ‫اذا‬(‫لحجم‬ ‫وفقا‬ ‫ابتداءا‬ ‫المحدد‬ ‫الطابور‬),‫فراغ‬ ‫به‬ ‫اليوجد‬ ‫الطابور‬ ‫بان‬ ‫رسالة‬ ‫ارسال‬ ‫فيتم‬. 2.‫مؤ‬ ‫يكن‬ ‫لم‬ ‫اذا‬‫للطابور‬ ‫االخير‬ ‫الموقع‬ ‫على‬ ‫يؤشر‬ ‫النهاية‬ ‫شر‬,‫مايلي‬ ‫يتم‬ ‫عنده‬: A.‫تغ‬ ‫يتم‬‫ي‬‫المؤشر‬ ‫موقع‬ ‫ير‬(‫النهاية‬ ‫مؤشر‬)‫له‬ ‫واحد‬ ‫باضافة‬(‫الموقع‬ ‫الى‬ ‫المؤشر‬ ‫ينتقل‬ ‫اي‬ ‫الجديد‬.) B.‫يضاف‬‫ال‬‫الجديد‬ ‫عنصر‬. 3.‫يساوي‬ ‫النهاية‬ ‫مؤشر‬ ‫كان‬ ‫اذا‬(-1)‫واحد‬ ‫بمقدار‬ ‫البداية‬ ‫ومؤشر‬ ‫النهاية‬ ‫مؤشر‬ ‫زيادة‬ ‫يتم‬ ‫عندها‬ (‫يساوي‬ ‫البداية‬ ‫مؤشر‬ ‫ان‬ ‫يعني‬ ‫ذلك‬ ‫الن‬(-1)‫ايضا‬,‫فارغ‬ ‫الطابور‬ ‫ان‬ ‫اي‬‫و‬‫اي‬ ‫على‬ ‫اليحتوي‬ ‫عنصر‬.) ‫الطابور‬ ‫من‬ ‫عنصر‬ ‫حذف‬: 1.‫للطابور‬ ‫البداية‬ ‫مؤشر‬ ‫فحص‬ ‫يتم‬,‫الفراغ‬ ‫على‬ ‫يؤشر‬ ‫كان‬ ‫اذا‬(‫تساوي‬ ‫المؤشر‬ ‫قيمة‬(-1)),‫يتم‬ ‫استصدار‬‫رس‬‫ا‬‫ل‬‫ة‬‫على‬‫خالي‬ ‫الطابور‬ ‫ان‬‫العناصر‬ ‫من‬. 2.‫يؤشر‬ ‫كان‬ ‫اذا‬‫العناصر‬ ‫احد‬ ‫على‬(‫التساوي‬ ‫قيمته‬ ‫اي‬-1)‫العنصر‬ ‫حذف‬ ‫يتم‬‫علية‬ ‫يؤشر‬ ‫الذي‬ ‫البداية‬ ‫مؤشر‬,‫كمايلي‬ ‫ذلك‬ ‫ويتم‬: A.‫موقع‬ ‫يغير‬‫ال‬‫مؤشر‬‫بمقدار‬ ‫بزيادتة‬‫واحد‬(‫بواحد‬ ‫بزيادتة‬ ‫المؤشر‬ ‫قيمة‬ ‫تغيير‬ ‫مجرد‬ ‫ان‬ ‫حذفة‬ ‫تم‬ ‫العنصر‬ ‫ان‬ ‫يعني‬). 3.‫المؤشرا‬ ‫يصفر‬ ‫النهاية‬ ‫مؤشر‬ ‫يساوي‬ ‫البداية‬ ‫مؤشر‬ ‫كان‬ ‫اذا‬‫ن‬(‫القيمة‬ ‫لهما‬ ‫تسند‬(-1)),‫يدل‬ ‫والذي‬ ‫فارغ‬ ‫الطابور‬ ‫ان‬ ‫على‬. ‫مستقرة‬ ‫بيانات‬ ‫بهياكل‬ ‫الطابور‬ ‫خزن‬: ‫مسبقا‬ ‫حجمها‬ ‫يحدد‬ ‫مصفوفة‬ ‫شكل‬ ‫على‬ ‫الطابور‬ ‫بخزن‬ ‫ذلك‬ ‫ويكون‬. ‫مؤشر‬ ‫هناك‬ ‫ويكون‬‫ان‬‫دليال‬ ‫او‬‫ن‬‫للمصفوف‬‫ة‬‫عليهم‬ ‫يحافظ‬ ‫ان‬ ‫يجب‬ ‫والتي‬ ‫الطابور‬ ‫وذيل‬ ‫رأس‬ ‫هي‬ ‫والتي‬ ‫الطاب‬ ‫وضع‬ ‫لتحديد‬‫ور‬.‫الطابور‬ ‫رأس‬‫بالموقع‬ ‫يكون‬ ‫بداية‬ ‫الطابور‬ ‫وذيل‬(-1)‫االضافة‬ ‫عند‬ ‫قيمهم‬ ‫وتتغير‬ ‫والحذف‬.‫بحجم‬ ‫طابور‬ ‫لدينا‬ ‫لنفرض‬5‫للطابور‬ ‫والحذف‬ ‫االضافة‬ ‫كيفية‬ ‫لنرى‬ ‫عناصر‬,‫قيمة‬ ‫تغير‬ ‫وكيفية‬ ‫المؤشرات‬.
  5. 5. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 5 ‫شكل‬(4:)‫خطي‬ ‫طابور‬ ‫في‬ ‫والحذف‬ ‫االضافة‬ ‫عمليات‬ ‫ا‬ ‫الطابور‬ ‫مع‬ ‫للتعامل‬ ‫برنامج‬‫لخطي‬..‫والحذف‬ ‫االضافة‬ // Problem : Queue - Data Structure #include < iostream > #define QUEUE_SIZE 100 using namespace std; class Queue { int q[QUEUE_SIZE]; int first, last; int count; public: Queue(); void enqueue(int x); int dequeue(); int getSize(); };
  6. 6. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 6 Queue::Queue() { first = 0; last = QUEUE_SIZE - 1; count = 0; } void Queue::enqueue(int x) { last = (last + 1) % QUEUE_SIZE; q[last] = x; count++; } int Queue::dequeue() { int x = q[first]; first = (first + 1) % QUEUE_SIZE; count--; return x; } int Queue::getSize() { return count; } int main() { Queue q; q.enqueue(1); q.enqueue(2); q.enqueue(3); while (q.getSize()) cout << q.dequeue() << endl; return 0; }
  7. 7. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 7 ‫ديناميكية‬ ‫بيانات‬ ‫هياكل‬ ‫في‬ ‫الطابور‬ ‫خزن‬ ‫المكدس‬ ‫في‬ ‫الحال‬ ‫هو‬ ‫كما‬,‫مع‬ ‫بيانات‬ ‫على‬ ‫تحتوي‬ ‫الديناميكية‬ ‫البيانات‬ ‫هياكل‬ ‫في‬ ‫عقدة‬ ‫كل‬ ‫فان‬‫مؤشر‬ ‫ي‬‫ش‬‫ي‬‫الالحقة‬ ‫العقدة‬ ‫عنوان‬ ‫الى‬ ‫ر‬. ‫مؤشر‬ ‫الى‬ ‫يحتاج‬ ‫ايضا‬ ‫الطابور‬‫يؤشر‬ ‫احدهما‬ ‫ين‬‫ومؤشر‬ ‫الراسية‬ ‫العقدة‬ ‫الى‬‫يؤشر‬ ‫اخر‬‫الذنب‬ ‫عقدة‬ ‫الى‬. ‫ال‬‫يوضح‬ ‫الالحق‬ ‫شكل‬‫طريقة‬‫ال‬‫اسمه‬ ‫لطابور‬ ‫خزن‬Queue‫بيانات‬ ‫من‬ ‫تتكون‬ ‫عقدة‬ ‫كل‬(DataItem) ‫ومؤشر‬( NextNode)‫الالحقة‬ ‫العقدة‬. ‫شكل‬(5:)‫الموصولة‬ ‫القوائم‬ ‫باستخدام‬ ‫الخطي‬ ‫الطابور‬ ‫تمثيل‬ ‫المؤشرات‬ ‫استخدام‬ ‫خالل‬ ‫من‬ ‫تتم‬ ‫العقد‬ ‫هذه‬ ‫الى‬ ‫الوصول‬ ‫عملية‬,‫لشرح‬ ‫فصل‬ ‫تخصيص‬ ‫سيتم‬ ‫والتي‬‫كيفية‬ ‫القوائم‬ ‫عمل‬. ‫سؤال‬:‫محدد‬ ‫حجم‬ ‫لها‬ ‫المصفوفة‬,‫جديد‬ ‫عنصر‬ ‫هناك‬ ‫وكان‬ ‫المصفوفة‬ ‫نهاية‬ ‫في‬ ‫الخلف‬ ‫مؤشر‬ ‫كان‬ ‫فاذا‬ ‫اضافته‬ ‫يراد‬,‫الحل؟‬ ‫هو‬ ‫فما‬ ‫الحلول‬ ‫من‬ ‫اثنان‬ ‫هناك‬: ‫المصفوفة‬ ‫في‬ ‫االمام‬ ‫الى‬ ‫العناصر‬ ‫كل‬ ‫تزحيف‬(‫مكلفة‬ ‫وهذه‬‫جدا‬) ‫الطا‬ ‫يولد‬ ‫وهذا‬ ‫المصفوفة‬ ‫حول‬ ‫االلتفاف‬ ‫ثانيا‬‫الدائري‬ ‫بور‬ ‫المكدس‬ ‫في‬ ‫استخدمت‬ ‫التي‬ ‫البرنامج‬ ‫شفرة‬ ‫نموذج‬ ‫نفس‬ ‫نستخدم‬ ‫دعنا‬.‫بالقيمة‬ ‫النهايتين‬ ‫كال‬ ‫نبتدأ‬ ‫بداية‬ (-1)‫فارغ‬ ‫الطابور‬ ‫ان‬ ‫على‬ ‫للداللة‬.‫ستحصل‬ ‫النهايتين‬ ‫كال‬ ‫فان‬ ‫الطابور‬ ‫الى‬ ‫بيانات‬ ‫اضافة‬ ‫يتم‬ ‫فعندما‬ ‫جديدة‬ ‫قيم‬ ‫على‬.‫جديدة‬ ‫بيانات‬ ‫تضاف‬ ‫وعندما‬,‫الخ‬ ‫النهاية‬ ‫فان‬‫واحد‬ ‫بمقدار‬ ‫تزاد‬ ‫لفية‬,‫تحذف‬ ‫وعندما‬ ‫واحد‬ ‫بمقدار‬ ‫تنقص‬ ‫االمامية‬ ‫النهاية‬ ‫فان‬ ‫بيانات‬.‫اساسي‬ ‫عيب‬ ‫يملك‬ ‫ولكن‬ ‫جيد‬ ‫العمل‬ ‫هذا‬.‫االن‬‫لو‬ ‫ماذا‬ ‫هي‬ ‫الطابور‬ ‫لطاقة‬ ‫العظمى‬ ‫القيمة‬ ‫كانت‬5‫عناصر‬. ‫ل‬‫اخرى‬ ‫مرة‬ ‫اخران‬ ‫اثنان‬ ‫واضاف‬ ‫عناصر‬ ‫ثالث‬ ‫حذف‬ ‫عناصر‬ ‫اربع‬ ‫اضاف‬ ‫المستخدم‬ ‫ان‬ ‫نفرض‬. ‫المك‬‫البيانات‬ ‫من‬ ‫نصف‬ ‫اخر‬ ‫باضافة‬ ‫له‬ ‫اليسمح‬ ‫سوف‬ ‫دس‬(‫فقط‬ ‫واحد‬ ‫عنصر‬ ‫سيضيف‬ ‫اي‬)‫حيث‬ ‫المكدس‬ ‫ان‬ ‫ستقرر‬‫فراغ‬ ‫به‬ ‫اليوجد‬.‫ونقلل‬ ‫نزيد‬ ‫اننا‬ ‫السبب‬‫االضافة‬ ‫على‬ ‫اعتمادا‬ ‫النهايتين‬ ‫كال‬
  8. 8. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 8 ‫ببعض‬ ‫متعلقتان‬ ‫النهايتين‬ ‫كال‬ ‫ان‬ ‫والندرك‬ ‫اعمى‬ ‫بشكل‬ ‫والحذف‬.‫لماذا‬ ‫هو‬ ‫مهم‬ ‫سؤال‬ ‫الى‬ ‫سنخلص‬ ‫هنا‬ ‫الحقيقة‬ ‫في‬ ‫الطابور‬ ‫فية‬ ‫يكون‬ ‫الذي‬ ‫الوقت‬ ‫في‬ ‫المكدس‬ ‫بامتالء‬ ‫رسالة‬ ‫تظهر‬‫شبه‬‫فارغ‬.‫الى‬ ‫نحتاج‬ ‫هنا‬ ‫تر‬ ‫من‬ ‫اكثر‬ ‫البيانات‬ ‫على‬ ‫تركز‬ ‫جديدة‬ ‫طريقة‬‫الحذف‬ ‫نهاية‬ ‫او‬ ‫االضافة‬ ‫نهاية‬ ‫على‬ ‫كيزها‬. Rear = (rear + 1) mod n Front = (front + 1) mod n ‫شكل‬(6:)‫الدائري‬ ‫الطابور‬ ‫تمثيل‬ ‫الدائري‬ ‫الطابور‬ ‫مميزات‬: ‫الطابور‬ ‫ضمن‬ ‫البيانات‬ ‫تزحيف‬ ‫الى‬ ‫الحاجة‬ ‫دون‬ ‫العناصر‬ ‫بخزن‬ ‫المصفوفة‬ ‫لكامل‬ ‫يسمح‬ ‫الدائري‬ ‫الطابور‬. ‫بالطابو‬ ‫المصفوفة‬‫البداية‬ ‫مؤشر‬ ‫مع‬ ‫يتجاور‬ ‫النهاية‬ ‫مؤشر‬ ‫يجعل‬ ‫مما‬ ‫نفسها‬ ‫حول‬ ‫تلتف‬ ‫الدائري‬ ‫ر‬,‫هذا‬ ‫كفوء‬ ‫بشكل‬ ‫عنصر‬ ‫اخر‬ ‫او‬ ‫اول‬ ‫الى‬ ‫الوصول‬ ‫على‬ ‫يساعد‬.‫في‬ ‫الفارغ‬ ‫المكان‬ ‫فان‬ ‫الحذف‬ ‫عملية‬ ‫بعد‬ ‫جديد‬ ‫عنصر‬ ‫اي‬ ‫لخزن‬ ‫منه‬ ‫نستفيد‬ ‫ان‬ ‫ممكن‬ ‫المصفوفة‬. ‫او‬ ‫تحشر‬ ‫ان‬ ‫الممكن‬ ‫من‬ ‫العناصر‬ ‫فان‬ ‫الخطي‬ ‫الطابور‬ ‫في‬‫النهاية‬ ‫مؤشر‬ ‫بزيادة‬ ‫وذلك‬ ‫تضاف‬,‫وعندما‬ ‫يعتبر‬ ‫الطابور‬ ‫فان‬ ‫الطابور‬ ‫مقدمة‬ ‫من‬ ‫عناصر‬ ‫حذف‬ ‫تم‬ ‫وان‬ ‫وحتى‬ ‫االكبر‬ ‫الحجم‬ ‫الى‬ ‫النهاية‬ ‫مؤشر‬ ‫يصل‬ ‫مألن‬.‫كامل‬ ‫بشكل‬ ‫المصفوفة‬ ‫من‬ ‫االستفادة‬ ‫اليمكن‬ ‫الخطي‬ ‫الطابور‬ ‫في‬ ‫لذلك‬.‫اخر‬ ‫جانب‬ ‫من‬,‫الطابور‬ ‫في‬ ‫مع‬ ‫يتجاور‬ ‫البداية‬ ‫مؤشر‬ ‫فان‬ ‫الدائري‬‫المصفوفة‬ ‫لكامل‬ ‫يسمح‬ ‫الدائري‬ ‫الطابور‬ ‫فان‬ ‫وعليه‬ ‫النهاية‬ ‫مؤشر‬ ‫العناصر‬ ‫لخزن‬.‫االساسي‬ ‫الفائدة‬‫ة‬‫فضاء‬ ‫استخدام‬ ‫امكانية‬ ‫هو‬ ‫الخطي‬ ‫الطابور‬ ‫على‬ ‫الدائري‬ ‫للطابور‬ ‫بالذاكرة‬ ‫ضياعات‬ ‫والتوجد‬ ‫اكفأ‬ ‫بشكل‬ ‫المصفوفة‬.
  9. 9. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 9 ‫الدائري‬ ‫الطابور‬ ‫الى‬ ‫عنصر‬ ‫اضافة‬ ‫خوارزمية‬ 1.‫ت‬‫البد‬ ‫مؤشر‬ ‫بفحص‬ ‫بدأ‬‫الطابور‬ ‫وضعية‬ ‫لمعرفة‬ ‫والنهاية‬ ‫اية‬ if (front = = (rear+1) % max) ‫صحيحة‬ ‫العالقة‬ ‫هذه‬ ‫كانت‬ ‫اذا‬ ‫الطابور‬ ‫ان‬ ‫يعني‬ ‫ذلك‬ ‫فان‬‫واليوجد‬ ‫ممتليء‬‫فيه‬‫فراغ‬,‫لذلك‬ A.‫الطابور‬ ‫امتالء‬ ‫الى‬ ‫تشير‬ ‫خطأ‬ ‫رسالة‬ ‫طباعة‬ ‫يتم‬ B.‫االضافة‬ ‫دالة‬ ‫من‬ ‫الخروج‬ 2.‫اذا‬‫في‬ ‫العبارة‬ ‫كانت‬(1)‫موقعه‬ ‫لتغيير‬ ‫النهاية‬ ‫مؤشر‬ ‫الى‬ ‫واحد‬ ‫اضافة‬ ‫يتم‬ ‫الحالة‬ ‫هذة‬ ‫ففي‬ ‫خاطئة‬ rear = (rear+1) % max 3.‫النهاية‬ ‫مؤشر‬ ‫عليه‬ ‫يؤشر‬ ‫الذي‬ ‫الموقع‬ ‫في‬ ‫الجديد‬ ‫العنصر‬ ‫اضافة‬ Q[rear] = element; 4.‫موقع‬ ‫في‬ ‫كان‬ ‫اذا‬ ‫فيما‬ ‫البداية‬ ‫مؤشر‬ ‫فحص‬(-1),‫فارغ‬ ‫الطابور‬ ‫ان‬ ‫اي‬,‫ت‬ ‫عندها‬‫المؤشر‬ ‫قيمة‬ ‫غير‬ ‫البداية‬ ‫مؤشر‬ ‫الى‬ ‫واحد‬ ‫باضافة‬ ‫وذلك‬‫النهاية‬ ‫ومؤشر‬ If (front == -1 ) front = 0; rear = 0; ‫الدائري‬ ‫الطابور‬ ‫من‬ ‫عنصر‬ ‫حذف‬ ‫خوارزمية‬ 1.‫تساوي‬ ‫المؤشران‬ ‫قيمة‬ ‫كانت‬ ‫فاذا‬ ‫والنهاية‬ ‫البداية‬ ‫مؤشري‬ ‫فحص‬ ‫يتم‬ ‫بداية‬(-1)‫ان‬ ‫يعني‬ ‫ذلك‬ ‫فان‬ ‫اليمك‬ ‫وبالتالي‬ ‫فارغ‬ ‫الطابور‬‫فارغ‬ ‫طابور‬ ‫من‬ ‫عنصر‬ ‫حذف‬ ‫ن‬ if ((front == rear) && (rear == -1)) A.‫فارغ‬ ‫الطابور‬ ‫ان‬ ‫على‬ ‫للداللة‬ ‫خطأ‬ ‫رسالة‬ ‫طباعة‬ ‫يتم‬ ‫الحالة‬ ‫هذه‬ ‫في‬ B.‫الحذف‬ ‫دالة‬ ‫من‬ ‫الخروج‬ 2.‫ذلك‬ ‫خالف‬ ‫في‬,‫في‬ ‫العبارة‬ ‫ان‬ ‫بمعنى‬ ‫بفارغ‬ ‫ليس‬ ‫الطابور‬ ‫كان‬ ‫اذا‬ ‫اي‬(1)‫خاطئة‬..‫يتم‬ ‫عندها‬ ‫علية‬ ‫يؤشر‬ ‫الذي‬ ‫العنصر‬ ‫حذف‬‫البداية‬ ‫مؤشر‬ element = Q[front] 3.‫مؤشر‬ ‫قيمة‬ ‫تغيير‬ ‫يتم‬‫البداية‬‫وذلك‬‫بزيادتها‬‫بواحد‬..‫حالتين‬ ‫هنا‬ ‫الحظ‬ A.‫للصفر‬ ‫مساواتهم‬ ‫يتم‬ ‫عندها‬ ‫متساويين‬ ‫والنهاية‬ ‫البداية‬ ‫مؤشري‬ ‫يكون‬ ‫ان‬ ‫اما‬(‫ان‬ ‫يعني‬ ‫هذا‬ ‫فقط‬ ‫واحد‬ ‫عنصر‬ ‫على‬ ‫يحتوي‬ ‫الطابور‬) If (front == rear) front=rear = -1 B.‫اذا‬ ‫اما‬‫في‬ ‫العبارة‬ ‫كان‬(A)‫واحد‬ ‫عنصر‬ ‫من‬ ‫اكثر‬ ‫على‬ ‫يحتوي‬ ‫الطابور‬ ‫ان‬ ‫اي‬ ‫خاطئة‬ ‫ادناه‬ ‫في‬ ‫كما‬ ‫البداية‬ ‫مؤشر‬ ‫الى‬ ‫واحد‬ ‫يضاف‬ ‫عندها‬ front = (front + 1) % max ‫مالحظة‬:‫الخطوة‬ ‫في‬(2)‫اي‬ ‫اجراء‬ ‫او‬ ‫الحقا‬ ‫طباعته‬ ‫لغرض‬ ‫وذلك‬ ‫بمتغير‬ ‫حذفة‬ ‫المراد‬ ‫العنصر‬ ‫حجز‬ ‫تم‬ ‫عليه‬ ‫عملية‬,‫هذ‬ ‫اهمال‬ ‫ويمكن‬‫اذا‬ ‫الخطوة‬ ‫ه‬‫مهمة‬ ‫المحذوف‬ ‫العنصر‬ ‫قيمة‬ ‫تكن‬ ‫لم‬ ‫مالحظة‬:‫يس‬ ‫ربما‬‫أ‬‫الخطوة‬ ‫في‬ ‫القسمة‬ ‫باقي‬ ‫استخدام‬ ‫لماذا‬ ‫القاريء‬ ‫ل‬(2, 3)‫االضافة‬ ‫خوارزميتي‬ ‫من‬ ‫والحذف‬.‫ان‬ ‫هنا‬ ‫والجواب‬(max)‫فهناك‬ ‫دائري‬ ‫طابور‬ ‫نستخدم‬ ‫اننا‬ ‫وبما‬ ‫الدائري‬ ‫الطابور‬ ‫حجم‬ ‫تعني‬ ‫عناصر‬ ‫وحذف‬ ‫الطابور‬ ‫امتالء‬ ‫احتمال‬‫والبداية‬ ‫النهاية‬ ‫مؤشر‬ ‫موقع‬ ‫يتغير‬ ‫وبالتالي‬ ‫منه‬,‫امتأل‬ ‫فاذا‬‫الطابور‬
  10. 10. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 10 ‫الطابور‬ ‫في‬ ‫موقع‬ ‫اخر‬ ‫على‬ ‫النهاية‬ ‫مؤشر‬ ‫يكون‬(‫حذفها‬ ‫تم‬ ‫العناصر‬ ‫من‬ ‫عدد‬ ‫ولكن‬ ‫ممتأل‬ ‫الطابور‬ ‫لنتخيل‬ ‫الطابور‬ ‫بداية‬ ‫في‬ ‫فراغ‬ ‫سيكون‬ ‫هنا‬)‫وبالتالي‬ ‫بواحد‬ ‫قيمته‬ ‫ستزاد‬ ‫المؤشر‬ ‫فان‬ ‫جديدة‬ ‫اضافة‬ ‫اردنا‬ ‫فاذا‬ ‫س‬‫ل‬ ‫القسمة‬ ‫باقي‬ ‫نعمل‬ ‫لذلك‬ ‫الطابور‬ ‫لحجم‬ ‫العليا‬ ‫القيمة‬ ‫من‬ ‫اكبر‬ ‫قيمته‬ ‫تكون‬‫ت‬‫النهاية‬ ‫مؤشر‬ ‫قيمة‬ ‫كون‬(1)‫او‬ ‫الطابور‬ ‫حجم‬ ‫مدى‬ ‫ضمن‬ ‫اخرى‬ ‫قيمة‬ ‫اي‬,‫البداية‬ ‫مؤشر‬ ‫على‬ ‫ينطبق‬ ‫الشيء‬ ‫ونفس‬. ‫توضيحية‬ ‫امثلة‬ ‫ان‬ ‫لنفرض‬A‫دائري‬ ‫طابور‬ ‫هو‬.‫هو‬ ‫حجمها‬5‫عليها‬ ‫والحذف‬ ‫االضافة‬ ‫كيفية‬ ‫ولنرى‬. ‫ب‬‫التالية‬ ‫العناصر‬ ‫اضافة‬ ‫على‬ ‫سنعمل‬ ‫ولذلك‬ ‫خالي‬ ‫الطابور‬ ‫فان‬ ‫دءا‬22,42,62 ‫المؤشرات‬ ‫فيها‬ ‫سنوضح‬ ‫والتي‬ ‫الرسومية‬ ‫االشكال‬ ‫خالل‬ ‫من‬ ‫والحذف‬ ‫االضافة‬ ‫عملية‬ ‫سنتابع‬‫ومواقعها‬: 1.‫قيمتهم‬ ‫النهاية‬ ‫ومؤشر‬ ‫البداية‬ ‫مؤشر‬ ‫فان‬ ‫بداية‬(-1)‫فارغ‬ ‫الطابور‬ ‫ان‬ ‫اي‬ ‫شكل‬(7:)‫الدائري‬ ‫الطابور‬ ‫الى‬ ‫عناصر‬ ‫اضافة‬ ‫العنصرين‬ ‫اضافة‬52‫و‬12‫الطابور‬ ‫الى‬
  11. 11. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 11 ‫شكل‬(8:)‫الدائري‬ ‫الطابور‬ ‫الى‬ ‫عنصرين‬ ‫اضافة‬ ‫االن‬‫اضافة‬ ‫لنجرب‬‫عنصر‬‫ليكن‬ ‫اخر‬32‫الدائري‬ ‫الطابور‬ ‫الى‬. ‫اوال‬‫ن‬‫ستخدام‬‫التالية‬ ‫العالقة‬(‫من‬ ‫للتاكد‬‫فراغ‬ ‫وجود‬) If ( front == ((rear +1) % size)) Front = 0 (Rear + 1) % size = (4+1) % 5 = 0 ‫صحيحة‬ ‫اعاله‬ ‫العالقة‬ ‫اذن‬,‫ممتليء‬ ‫الطابور‬ ‫ان‬ ‫يعني‬ ‫وهذا‬‫االضافة‬ ‫اليمكن‬ ‫لذلك‬ ‫عنصر‬ ‫لنحذف‬ ‫االن‬ ‫نتاكد‬ ‫اوال‬‫من‬‫عناصر‬ ‫وجود‬‫باست‬ ‫وذلك‬‫التالية‬ ‫العالقة‬ ‫خدام‬ If (Front == Rear) && (Rear = -1) ‫فارغ‬ ‫الطابور‬ ‫يكون‬ ‫هنا‬‫صحيحة‬ ‫العبارة‬ ‫هذه‬ ‫كانت‬ ‫اذا‬ ‫فارغ‬ ‫ليس‬ ‫الطابور‬ ‫اي‬ ‫الطابور‬ ‫في‬ ‫عناصر‬ ‫وجود‬ ‫يعني‬ ‫فهذا‬ ‫صحيحة‬ ‫تكن‬ ‫لم‬ ‫اذا‬ ‫اما‬. ‫فان‬ ‫الحالة‬ ‫هذه‬ ‫في‬(front = 0 && rear = 4)‫متساويين‬ ‫غير‬ ‫اي‬(‫خاطئ‬ ‫العبارة‬ ‫يعني‬‫ة‬) ‫حذفه‬ ‫يتم‬ ‫البداية‬ ‫مؤشر‬ ‫عليه‬ ‫يؤشر‬ ‫كان‬ ‫الذي‬ ‫العنصر‬ ‫فان‬ ‫وبذلك‬ ‫البداية‬ ‫مؤشر‬ ‫زيادة‬ ‫يتم‬ ‫هنا‬ ‫وكمايلي‬ Front = (Front + 1) % size = (0 + 1) % 5 = 1 % 5 Front = 1
  12. 12. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 12 ‫شكل‬(9: )‫عناصرة‬ ‫احد‬ ‫حذف‬ ‫بعد‬ ‫الدائري‬ ‫الطابور‬ ‫الطريقة‬ ‫نفس‬ ‫نتبع‬ ‫اخر‬ ‫عنصر‬ ‫لنحذف‬ Front = ( Front + 1) % size = (1 +1 ) % 5 = 2 % 5 = 2 ‫شكل‬(12:)‫منه‬ ‫ثان‬ ‫عنصر‬ ‫حذف‬ ‫بعد‬ ‫الدائري‬ ‫الطابور‬ ‫توضيحي‬ ‫اخر‬ ‫مثال‬ ‫تكون‬ ‫ان‬ ‫بعد‬ ‫الطابور‬ ‫في‬ ‫جديد‬ ‫عنصر‬ ‫الضافة‬ ‫فرصة‬ ‫التوجد‬ ‫حيث‬ ‫ادناه‬ ‫الشكل‬ ‫في‬ ‫الخطي‬ ‫الطابور‬ ‫الحظ‬ ‫فارغة‬ ‫االولى‬ ‫الثالث‬ ‫المواقع‬ ‫شكل‬(11:)‫خطي‬ ‫طابور‬ ‫الدائري‬ ‫الطابور‬ ‫في‬‫عنصر‬ ‫اضافة‬ ‫وعند‬,‫المؤشر‬ ‫سنضبط‬Rear‫الموقع‬ ‫على‬2‫االضافة‬ ‫بعملية‬ ‫ونبدأ‬ ‫المؤشر‬ ‫طالما‬ ‫للعناصر‬rear‫المؤشر‬ ‫من‬ ‫اقل‬front‫الشكل‬ ‫في‬ ‫كما‬
  13. 13. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 13 ‫شكل‬(12:)‫دائري‬ ‫طابور‬ ‫الدائري‬ ‫الطابور‬ ‫تسمى‬ ‫الفكرة‬ ‫هذه‬ ‫تنفيذ‬,‫ادناه‬ ‫بالشكل‬ ‫موضحة‬ ‫الدائري‬ ‫الطابور‬ ‫تمثيل‬,‫بال‬‫لطابور‬ ‫نسبة‬ ‫بحجم‬ ‫دائري‬4‫ادناه‬ ‫الشكل‬ ‫كما‬‫الموقع‬ ‫على‬ ‫يؤشر‬ ‫البداية‬ ‫مؤشر‬ ‫فان‬2‫النهاية‬ ‫ومؤشر‬rear‫على‬ ‫يؤشر‬ ‫الموقع‬1‫الشكل‬ ‫في‬ ‫كما‬(13)‫الدائري‬ ‫الطابور‬ ‫في‬ ‫مخزونه‬ ‫عنصرين‬ ‫ان‬ ‫يعني‬ ‫وهذا‬. ‫شكل‬(13: )‫االضافة‬ ‫بعد‬ ‫الدائري‬ ‫الطابور‬ ‫الط‬ ‫على‬ ‫العمليات‬ ‫من‬ ‫مجموعة‬ ‫لنطبق‬ ‫االن‬‫الدائري‬ ‫ابور‬,‫التالية‬ ‫االشكال‬ ‫في‬ ‫موضحة‬ ‫هي‬ ‫والتي‬ ‫البيانات‬ ‫اضافة‬22,45 ‫شكل‬(14:)‫بالعناصر‬ ‫مأله‬ ‫بعد‬ ‫الدائري‬ ‫الطابور‬ ‫البيانات‬ ‫من‬ ‫اثنين‬ ‫حذف‬
  14. 14. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 14 ‫شكل‬(15:)‫عناصرة‬ ‫من‬ ‫اثنين‬ ‫حذف‬ ‫بعد‬ ‫الدائري‬ ‫الطابور‬ ‫البيانات‬ ‫من‬ ‫اثنين‬ ‫اضافة‬77,29 ‫شكل‬(16:)‫الممتلي‬ ‫الدائري‬ ‫الطابور‬‫له‬ ‫عناصر‬ ‫اضافة‬ ‫بعد‬ ‫ء‬ ‫وحذف‬ ‫اضافة‬ ‫من‬ ‫الدائري‬ ‫الطابور‬ ‫عمليات‬ ‫يوضح‬ ‫برنامج‬ # include <iostream.h> # include <process.h> # include <conio.h> int display_menu(); class circularqueue { int arr[10]; int front,rear; int size; public: circularqueue() { front=0; rear=0; size=10; } void display(); void enqueue();
  15. 15. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 15 void delete_element(); }; void circularqueue :: display() { cout<<endl; if(front!=0 && rear!=0) { int i=front; cout<<"arr["<<i<<"] :"<<arr[i]<<endl; while(i!=rear) { i=(i % size)+1; cout<<"arr["<<i<<"] :"<<arr[i]<<endl; } } else { cout<<"Queue is empty"<<endl; } getch(); } void circularqueue :: enqueue() { cout<<endl; if(front==0 && rear==0) { cout<<"Enter Number to enqueue at Position arr["<<rear+1<<"] :"; cin>>arr[1]; rear=1; front=1; } else { int next=(rear % size)+1;
  16. 16. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 16 if(next==front) { cout<<"Queue is Full ..."; getch(); } else { cout<<"Enter Number to enqueue at Position arr["<<next<<"] :"; cin>>arr[next]; rear=next; } } } void circularqueue :: delete_element() { cout<<endl; if(rear==0 && front==0) { cout<<"Queue is empty ..."; getch(); return; } if(rear==front) { rear=0; front=0; } else { front=(front % size)+1; } } void main() { circularqueue cq1; while(1) { switch(display_menu())
  17. 17. ‫ا‬.‫م‬.‫د‬.‫العبادي‬ ‫نضال‬ ‫الطابور‬‫الكوفة‬ ‫جامعة‬ 17 { case 1: cq1.enqueue(); break; case 2: cq1.delete_element(); break; case 3: cq1.display(); break; case 4: exit(1); } } } int display_menu() { int c; clrscr(); cout<<endl; cout<<"| 1 | : Enqueue element"<<endl; cout<<"| 2 | : Delete element"<<endl; cout<<"| 3 | : Display"<<endl; cout<<"| 4 | : Exit"<<endl; cout<<"Enter your Choice :"; cin>>c; return c; }

×