Contoh dalam artikel ini menjelaskan bagaimana Java menggunakan struktur daftar tertaut melingkar untuk menyelesaikan masalah Joseph. Bagikan dengan semua orang untuk referensi Anda. Analisis spesifiknya adalah sebagai berikut:
Ini adalah soal ujian Java yang pertama. Bagi siswa yang belum pernah melihat linked list pasti tidak akan tahu bagaimana cara mengerjakannya.
pertanyaan Yusuf:
Ada n orang yang jumlahnya 1, 2, 3,..., n. N orang ini disusun membentuk lingkaran secara berurutan. Sekarang diberikan s dan d, mulailah menghitung dari 1 secara berurutan dari orang ke-s, dan orang yang menghitung sampai d akan keluar dari antrian, kemudian mulai menghitung dari orang berikutnya dan mulai dari 1 secara berurutan, dan orang yang hitungan sampai d akan keluar dari antrian lagi. Siklus ini berlanjut hingga semua orang akhirnya keluar. Diperlukan untuk mendefinisikan kelas simpul dan menggunakan struktur daftar tertaut melingkar untuk menyelesaikan masalah Joseph.
Jawaban versi java berikut ini:
Salin kode sebagai berikut: import java.util.Scanner;
public class LinkNode {//Kelas node dari daftar tertaut satu arah
data int publik; //Nilai simpul penyimpanan
LinkNode publik selanjutnya; //Referensi penyimpanan nilai node
public LinkNode(int k){ //Metode konstruksi, node dengan nilai k
data =k;
selanjutnya= nol;
}
}
kelas Josephus{
public static void printJosephus(int n,int s,int d){
int i=1; //Membuat daftar melingkar dengan panjang n
LinkNode q,ekor;
Kepala LinkNode = LinkNode baru(i);
kepala.berikutnya = kepala;
tail = head; //Node pertama, ekor dan kepala menyatu
sementara(saya<n){
saya++;
q = new LinkNode(i); //Tambahkan simpul baru
q.next = head; //Referensi dari node menunjuk ke head
tail.next = q; //Referensi elemen terakhir mengarah ke q
tail = q; //Maka elemen terakhir adalah q
}
int j= 0; //Mulai menghitung dari s dan menampilkan nomor antrian secara berurutan.
LinkNode p = head; //Menghitung titik awal
sementara(j<s-1){
j++;
p = p.berikutnya;
}
while(hal.berikutnya != p){
j = 1;
while(j<d-1) //Titik awal penghitungan
{
j++;
p = p.berikutnya;
}
System.out.print(p.next.data + " "); // Menampilkan nomor node yang di-dequeued
p.berikutnya = p.berikutnya.berikutnya;
p = p.next; //Terus menerus menunjuk ke node berikutnya
}
Sistem.keluar.cetak(p.data);
}
public static void main(String[] args) {
Masukan pemindai = Pemindai baru (Sistem.in);
int n = masukan.nextInt();
int a = masukan.nextInt();
int b = masukan.nextInt();
Josephus.printJosephus(n, a, b);
}
}
Saya harap artikel ini bermanfaat untuk pemrograman Java semua orang.