"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > إنشاء واجهة قائمة الانتظار

إنشاء واجهة قائمة الانتظار

تم النشر بتاريخ 2024-11-05
تصفح:376
  • إنشاء واجهة لقوائم انتظار الأحرف.

  • ثلاثة تطبيقات سيتم تطويرها:

  • قائمة الانتظار الخطية ذات الحجم الثابت.

  • قائمة الانتظار الدائرية (تعيد استخدام مساحة المصفوفة).

  • قائمة الانتظار الديناميكية (تنمو حسب الحاجة).

1 قم بإنشاء ملف يسمى ICharQ.java
// واجهة قائمة انتظار الأحرف.
الواجهة العامة ICharQ {
// أدخل حرفًا في قائمة الانتظار.
وضع الفراغ (شار الفصل)؛
// إزالة حرف من قائمة الانتظار.
الحصول على شار ()؛

2 قم بإنشاء ملف يسمى IQDemo.java.

3 ابدأ في إنشاء IQDemo.java عن طريق إضافة فئة FixedQueue الموضحة هنا:

Crie uma interface Queue

4 أضف فئة CircularQueue الموضحة أدناه إلى IQDemo.java.

Crie uma interface Queue

  • عملية قائمة الانتظار الدائرية: إعادة استخدام المساحة المحررة في المصفوفة عند إزالة العناصر، ويمكنها تخزين عدد غير محدود من العناصر، طالما كانت هناك عمليات إزالة.

  • شروط الحدود: قائمة الانتظار ليست ممتلئة عند الوصول إلى نهاية المصفوفة، ولكن عند استبدال عنصر لم تتم إزالته بعنصر جديد.
    يجب أن تتحقق طريقة put() من عدة شروط لتحديد ما إذا كانت قائمة الانتظار ممتلئة.

  • شروط قائمة الانتظار ممتلئة: قائمة الانتظار ممتلئة إذا: putloc وحدة أصغر من getloc. يوجد putloc في نهاية المصفوفة و getloc في البداية.

  • حالة قائمة الانتظار الفارغة: قائمة الانتظار فارغة عندما يكون getloc وputloc متساويين.

  • حجم المصفوفة: يتم إنشاء المصفوفة الأساسية أكبر من حجم قائمة الانتظار بوحدة واحدة لتسهيل عمليات الفحص.

5 أدخل فئة DynQueue الموضحة أدناه في IQDemo.java. إنها تنفذ قائمة انتظار "قابلة للتمديد" تعمل على توسيع حجمها عند نفاد المساحة.

Crie uma interface Queue

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

6 لتوضيح التطبيقات الثلاثة لـ ICharQ، أدخل الفئة التالية في IQDemo.java. ويستخدم مرجع ICharQ للوصول إلى كافة قوائم الانتظار.

فئة IQDemo {
الفراغ الثابت العام الرئيسي (String args[]) {
FixedQueue q1 = FixedQueue الجديد(10);
DynQueue q2 = جديد DynQueue(5);
CircularQueue q3 = CircularQueue(10);
ايشار كيو آي كيو؛
شار الفصل؛
كثافة العمليات أنا؛
معدل الذكاء = q1;
// إدراج بعض الأحرف في قائمة الانتظار الثابتة.
ل(i=0; i iQ.put((شار) ('A' i));
// يعرض قائمة الانتظار.
System.out.print("محتويات قائمة الانتظار الثابتة:");
ل(i=0; i ch = iQ.get();
System.out.print(ch);

System.out.println();
معدل الذكاء = q2;
// إدراج بعض الأحرف في قائمة الانتظار الديناميكية.
ل(i=0; i iQ.put((char) ('Z' - i));
// يعرض قائمة الانتظار.
System.out.print("محتويات قائمة الانتظار الديناميكية:");
ل(i=0; i ch = iQ.get();
System.out.print(ch);

System.out.println();
معدل الذكاء = q3;
// إدراج بعض الأحرف في قائمة الانتظار الدائرية.
ل(i=0; i iQ.put((شار) ('A' i));
// يعرض قائمة الانتظار.
System.out.print("محتويات قائمة الانتظار الدائرية:");
ل(i=0; i ch = iQ.get();
System.out.print(ch);

System.out.println();
// أدخل المزيد من الأحرف في قائمة الانتظار الدائرية.
ل(i=10; i iQ.put((شار) ('A' i));
// يعرض قائمة الانتظار.
System.out.print("محتويات قائمة الانتظار الدائرية:");
ل(i=0; i ch = iQ.get();
System.out.print(ch);

System.out.println("\nالتخزين والاستهلاك من"
"قائمة الانتظار الدائرية.");
// يخزن ويستهلك العناصر من قائمة الانتظار الدائرية.
ل(i=0; i iQ.put((شار) ('A' i));
ch = iQ.get();
System.out.print(ch);


7 قم بإنشاء نسخة دائرية من DynQueue. أضف إلى ICharQ طريقة إعادة التعيين () التي تربط قائمة الانتظار. قم بإنشاء طريقة ثابتة لنسخ محتويات نوع قائمة انتظار واحد إلى نوع آخر.

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/devsjavagirls/crie-uma-interface-queue-5e0k?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3