import java.util.Scanner;
publicclassJosephusProblem {
staticclassSinglyLinkedCircularList {
int val;
SinglyLinkedCircularList next;
publicSinglyLinkedCircularList(int val) {
this.val = val;
}
}
publicstaticvoidmain(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入总人数N:"); // 键盘输入值---总人数N、起始位置K和报数上限Mint n = scanner.nextInt();
System.out.print("请输入起始位置K:");
int k = scanner.nextInt();
System.out.print("请输入报数上限M:");
int m = scanner.nextInt();
SinglyLinkedCircularList head = new SinglyLinkedCircularList(1);
SinglyLinkedCircularList current = head;
for (int i = 2; i <= n; i++) {
current.next = new SinglyLinkedCircularList(i);
current = current.next;
}
current.next = head;
current = head;
for (int i = 1; i < k; i++) {
current = current.next;
}
System.out.println("出列编号序列为:"); // 开始报数出列while (n > 0) {
for (int i = 1; i < m; i++) {
current = current.next;
}
System.out.print(current.next.val + " ");
current.next = current.next.next;
n--;
if (n > 0) {
m = current.val;
current = current.next;
}
}
}
}