JAVA面向对象构建约瑟夫环的思路
时间: 2023-11-08 11:05:45 浏览: 95
构建约瑟夫环可以使用链表的方式实现,具体思路如下:
1. 定义一个节点类,包含节点编号和指向下一个节点的指针。
2. 构建一个循环链表,将每个节点按编号大小依次连接起来,最后将最后一个节点的指针指向第一个节点,形成一个环。
3. 从链表的头节点开始,依次遍历每个节点,每次遍历到第m个节点时,将该节点从链表中删除,并输出该节点的编号。
4. 将删除后的链表继续从下一个节点开始遍历,直到链表中只剩下一个节点为止。
下面是一个简单的JAVA代码示例:
```java
class Node {
int num;
Node next;
public Node(int num) {
this.num = num;
}
}
public class JosephusCircle {
public static void main(String[] args) {
int n = 10; // 总人数
int m = 3; // 每次报数的人数
Node head = new Node(1);
Node prev = head;
for (int i = 2; i <= n; i++) {
Node node = new Node(i);
prev.next = node;
prev = node;
}
prev.next = head; // 最后一个节点指向头节点,形成环
Node current = head;
while (current.next != current) {
// 找到第m个节点的前一个节点
for (int i = 1; i < m - 1; i++) {
current = current.next;
}
// 删除第m个节点
System.out.print(current.next.num + " ");
current.next = current.next.next;
current = current.next;
}
System.out.println(current.num);
}
}
```
阅读全文