java中的约瑟夫问题_java算法实现之约瑟夫问题(Josephu)

约瑟夫问题

8f1987a49c1a

image.png

首先这个问题我们可以很清楚的看出来,可以使用单向环形队列的数据结构来代入这个问题。

我先来分析一下这道题的思路:

第一步,确定是单向环形链表后,我们需要先构建这样一个数据结构,

由于每个人的最后都出列后,这个队伍中的人数为0,因此我们不需要设置头节点,比较简便。所以我们先构建一个,包含编号、指向下一个节点的类。

class Baby{

//编号

private int no;

//指向下一个节点

private Baby next;

//get\set....

}

2.队列有了,那么我们第二部,就需要普通的数据结构都需要有的基本方法,遍历,新增,修改,删除。。。根据题意,只需要遍历(用于测试)还有新增,就足够了。所以我们在新建一个内部类,把该单向环形链表作为私有类,写一些常用方法来操作它。

class CircleSingleLinkedList{

//创建一个fist节点

private Baby first=new Baby(-1);

//添加一个小孩,构建一个环形链表

public void addBaby(int nums){

//nums 代表要添加几个小孩

if(nums<1){

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值