ตัวอย่างในบทความนี้อธิบายถึงวิธีที่ Java ใช้โครงสร้างรายการลิงก์แบบวงกลมเพื่อแก้ไขปัญหาของ Joseph แบ่งปันกับทุกคนสำหรับการอ้างอิงของคุณ การวิเคราะห์เฉพาะมีดังนี้:
นี่เป็นคำถามสอบ Java ครั้งแรก สำหรับนักเรียนที่ไม่เคยเห็น Link List มาก่อนจะไม่รู้ว่าต้องทำอย่างไร มองย้อนกลับไปตอนนี้ก็ไม่ยากเลย
โจเซฟถาม:
มี n คนซึ่งมีหมายเลขคือ 1, 2, 3,..., n n คนเหล่านี้ถูกจัดเรียงเป็นวงกลมตามลำดับ ตอนนี้ให้ s และ d ให้เริ่มนับจาก 1 ตามลำดับจากคนที่ s และคนที่นับถึง d จะออกจากคิวแล้วเริ่มนับจากคนถัดไปและเริ่มนับ 1 ตามลำดับ และคนที่ นับถึง d จะออกจากคิวอีกครั้ง วงจรนี้ดำเนินต่อไปจนกระทั่งทุกคนออกมาในที่สุด จำเป็นต้องกำหนดคลาสโหนดและใช้โครงสร้างรายการลิงก์แบบวงกลมเพื่อแก้ไขปัญหาของโจเซฟ
คำตอบเวอร์ชัน Java ต่อไปนี้:
คัดลอกโค้ดดังต่อไปนี้: import java.util.Scanner;
LinkNode คลาสสาธารณะ { // คลาสโหนดของรายการที่เชื่อมโยงทางเดียว
ข้อมูล int สาธารณะ // ค่าโหนดการจัดเก็บข้อมูล
LinkNode สาธารณะถัดไป // การอ้างอิงการจัดเก็บค่าโหนด
LinkNode สาธารณะ (int k) // วิธีการก่อสร้างโหนดที่มีค่า k
ข้อมูล = k;
ถัดไป=โมฆะ;
-
-
ชั้นโจเซฟัส{
โมฆะคงที่สาธารณะ printJosephus (int n, int s, int d) {
int i=1; //สร้างรายการวงกลมที่มีความยาว n
LinkNode q, หาง;
หัว LinkNode = LinkNode ใหม่ (i);
head.next = หัว;
tail = head; // โหนดแรก หาง และ หัว รวมกัน
ในขณะที่(ฉัน<n){
ฉัน++;
q = LinkNode ใหม่ (i); // เพิ่มโหนดใหม่
q.next = head; //การอ้างอิงของโหนดชี้ไปที่ head
tail.next = q; // การอ้างอิงองค์ประกอบสุดท้ายชี้ไปที่ q
tail = q; // จากนั้นองค์ประกอบสุดท้ายคือ q
-
int j= 0; //เริ่มนับจาก s และส่งออกจำนวนคิวเกอร์ตามลำดับ
LinkNode p = head; // การนับจุดเริ่มต้น
ในขณะที่(j<s-1){
เจ++;
p = p.ถัดไป;
-
ในขณะที่(p.next != p){
เจ = 1;
ในขณะที่(j<d-1) //จุดเริ่มต้นของการนับ
-
เจ++;
p = p.ถัดไป;
-
System.out.print(p.next.data + " "); // ส่งออกหมายเลขโหนดที่แยกออกจากกัน
p.next = p.next.next;
p = p.next; //ชี้ไปที่โหนดถัดไปอย่างต่อเนื่อง
-
System.out.print(p.data);
-
โมฆะคงที่สาธารณะ main (String [] args) {
อินพุตสแกนเนอร์ = สแกนเนอร์ใหม่ (System.in);
int n = input.nextInt();
int a = input.nextInt();
int b = input.nextInt();
Josephus.printJosephus(n, a, b);
-
-
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน