java使用链表实现约瑟夫环

作者:hairongtian 时间:2022-03-21 18:59:35 

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。求出出队序列。

采用链表实现,结点数据就是编号。


package com.dm.test;

public class Test2
{
public static void main(String[] args)
{
//头结点
Node root = new Node(1);
int[] order = build(root,9,5);
for(int i =0;i<order.length;i++)
{
System.out.print(order[i]+" ");
}
}
//将约瑟夫环建成一个链表
public static int[] build(Node root,int n, int m)
{
Node current = root;
for(int i = 2; i<=n; i++)
{
Node node = new Node(i);
current.next = node;
current = node;
}
current.next = root;
int[] order = come(root,n,m);
return order;
}
//出队列
//结束条件:只有一个结点时,这个结点的next是它自身
//将出来的数,放在一个数组中,遍历数组就是出队序列
public static int[] come(Node root,int n, int m)
{
int[] order = new int[n];
int j = 0;
Node p = root;
while(p.next!=p)
{
int i = 1;
while(i<m-1)
{
p=p.next;
i++;
}
if(i==m-1)
{
order[j]=p.next.data;
j++;
p.next = p.next.next;
p=p.next;
}
}
order[j]=p.data;
return order;
}
}
class Node
{
int data;
Node next;
public Node(int data)
{
this.data = data;
next= null;
}
}

来源:https://blog.csdn.net/hairongtian/article/details/7926969

标签:java,链表,约瑟夫环
0
投稿

猜你喜欢

  • Android实现轮播图片效果

    2023-07-08 02:20:24
  • SWT(JFace) Menu、Bar...体验代码

    2022-01-29 08:34:46
  • Java ThreadLocal类使用详解

    2022-08-04 05:29:34
  • Android实现拼图小游戏

    2023-03-01 11:25:46
  • C++类常量和类枚举

    2022-05-05 17:07:47
  • unity 文件流读取图片与www读取图片的区别介绍

    2023-08-30 09:10:37
  • Android 使用viewpager实现无限循环(定时+手动)

    2023-12-09 07:43:56
  • Spring如何使用xml创建bean对象

    2023-10-24 08:53:56
  • C#使用GZipStream解压缩数据文件的方法

    2022-09-22 15:40:34
  • Android自定义view实现圆形进度条效果

    2021-09-12 00:30:03
  • android 使用Xml文件定义Shape方式

    2022-09-08 19:19:38
  • java @Value(

    2023-10-05 02:54:47
  • Java中BigDecimal的舍入模式解析(RoundingMode)

    2021-10-16 15:28:16
  • C# 获取硬盘号,CPU信息,加密解密技术的步骤

    2023-04-23 10:37:50
  • C#书写规范

    2023-07-09 09:15:57
  • java图片滑动验证(登录验证)原理与实现方法详解

    2023-07-10 13:29:53
  • formfile文件上传使用示例

    2023-06-23 03:41:58
  • Java俄罗斯方块小游戏

    2021-12-01 04:36:49
  • JavaAPI的使用方法详解

    2022-10-30 23:00:40
  • 详解Java8与Runtime.getRuntime().availableProcessors()

    2023-01-04 18:17:06
  • asp之家 软件编程 m.aspxhome.com