当前位置: 代码迷 >> 综合 >> 约瑟夫(Josephus)杀人法 环形链表java实现
  详细解决方案

约瑟夫(Josephus)杀人法 环形链表java实现

热度:19   发布时间:2023-11-24 03:27:58.0

注释很详细,直接上代码:

public class Josephus {
    public static int N=20;public static int M=5;//数到M就咔嚓一个人//结点class Node{
    int val;//下标Node next;public Node(int val){
    this.val=val;}}public void killNode(){
    Node header=new Node(1);//第一个节点Node x=header;//目前被点到的人//环形链表的初始化for(int i=2;i<=N;i++){
    x = (x.next=new Node(i));}x.next= header;//头尾相接System.out.println("被咔嚓的顺序为:");while(x != x.next){
    //由于是环形链表,因此只要x.next不指向x,就说明至少还有俩节点//至少还有俩人,仍然继续报数,咔嚓for(int i=1;i<M;i++){
    x=x.next;}System.out.println(x.next.val+"被干掉! ");x.next = x.next.next;}System.out.println();System.out.println("最后这个幸运儿是: "+x.val);}public static void main(String[] args) {
    Josephus josephus=new Josephus();	josephus.killNode();}
}

在这里插入图片描述

  相关解决方案