public class Main {
public static void main(String[] args) {
int n = 41,m = 5;//定义总人数n,和出圈数字m
//初始化循环列表,头结点first和尾结点p
int size = n;
Node first = new Node(1);
Node p = first;
for(int i=2; i<=n; i++){
Node temp = new Node(i);
p.next = temp;
p = temp;
}
p.next = first;//尾接头形成循环链表(p为尾结点)
//执行出圈操作
while(p != p.next && size>=m){
//下面for循环后,p是第m个结点的前一个结点
for(int i=1; i<m; i++){
p = p.next;
}
size -- ;
System.out.println(p.next.data+"出圈编号");
p.next = p.next.next;
}
while(p != p.next){
System.out.println("幸运编号========================>"+p.next.data);
p.next = p.next.next;
}
System.out.println("幸运编号========================>"+p.data);
}
public static class Node {
int data;
Node next;
Node(int arg1){
this.data = arg1;
}
} //成员类,代表节点,类似于数据结构中的结构体
}
约瑟夫环java链表实现
最新推荐文章于 2024-07-12 01:14:17 发布