يصف المثال الموجود في هذه المقالة كيفية استخدام Java لبنية القائمة المرتبطة الدائرية لحل مشكلة جوزيف. شاركها مع الجميع لتكون مرجعا لك. التحليل المحدد هو كما يلي:
هذا هو السؤال الأول في اختبار Java بالنسبة للطلاب الذين لم يروا قائمة مرتبطة من قبل، فلن يعرفوا كيفية القيام بذلك.
سؤال يوسف:
يوجد n أشخاص أرقامهم 1، 2، 3،...، n. يتم ترتيب هؤلاء الأشخاص في دائرة بالترتيب. الآن بالنظر إلى s وd، ابدأ العد من 1 بالترتيب من الشخص رقم 1، والشخص الذي يعد إلى d سيخرج من قائمة الانتظار، ثم ابدأ العد من الشخص التالي ويبدأ من 1 بالترتيب، والشخص الذي سيتم إخراج الأعداد إلى d من قائمة الانتظار مرة أخرى، وتستمر هذه الدورة حتى يخرج الجميع أخيرًا. مطلوب تحديد فئة العقدة واستخدام بنية القائمة المرتبطة الدائرية لحل مشكلة جوزيف.
نسخة جافا التالية من الإجابة:
انسخ الكود كما يلي: import java.util.Scanner;
public class LinkNode { // فئة العقدة للقائمة المرتبطة ذات الاتجاه الواحد
بيانات int العامة; // قيمة عقدة التخزين
public LinkNode next; // مرجع التخزين لقيمة العقدة
public LinkNode(int k){ // طريقة البناء، العقدة ذات القيمة k
البيانات = ك؛
التالي = فارغ؛
}
}
فئة جوزيفوس {
طباعة باطلة عامة ثابتةجوزيفوس(int n,int s,int d){
int i=1; // أنشئ قائمة دائرية بطول n
LinkNode q,tail;
LinkNode head = new LinkNode(i);
head.next = head;
tail = head; // العقدة الأولى والذيل والرأس معًا
بينما (أنا <ن) {
أنا++;
q = new LinkNode(i); // أضف عقدة جديدة
q.next = head; // يشير مرجع العقدة إلى الرأس
tail.next = q; // يشير مرجع العنصر الأخير إلى q
tail = q; // العنصر الأخير هو q
}
int j= 0; // ابدأ العد من s وأخرج رقم قائمة الانتظار بالتسلسل.
LinkNode p = head; // عد نقطة البداية
بينما(ي<s-1){
ي++;
ع = ص.next;
}
بينما(ص.التالي != ع){
ي = 1؛
while(j<d-1) //نقطة البداية للعد
{
ي++;
ع = ص.next;
}
System.out.print(p.next.data + " "); // إخراج رقم العقدة التي تم وضعها في قائمة الانتظار
p.next = p.next.next;
p = p.next; // أشر باستمرار إلى العقدة التالية
}
System.out.print(p.data);
}
public static void main(String[] args) {
إدخال الماسح الضوئي = الماسح الضوئي الجديد (System.in)؛
int n = input.nextInt();
int a = input.nextInt();
int b = input.nextInt();
Josephus.printJosephus(n, a, b);
}
}
آمل أن تكون هذه المقالة مفيدة لبرمجة جافا للجميع.