栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

约瑟夫问题的java代码和解释

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

约瑟夫问题的java代码和解释

学到环形链表 总绕不开的是约瑟夫问题:

首先 假如我们要构造的是n个boy类型的结点

如图是Boy类

接下来是构造环形链表了 

上面代码的意思是创一个循环链表(链表的单元此处是boy不是node) 结点数依据给的nums来 怎样才能建成循环链表呢 首先分为里面还什么都没有的情况 那这样就直接把新的boy加进来 自己指向自己 用个first变量来存储当做第一个变量 顺便把这个变量存储给temp temp用来干什么呢? 比如新建两个到还好 三个四个呢 就不能获取上一个结点呢(获取上一个结点 才能让上一个结点的下一个等于新加进来的boy 再让这个boy指向first)所以temp用来临时存储“上一个”的结点。每次循环最后都把新加进来的结点的赋给temp,这样下次循环temp就存储的是新进来boy的上一个结点了。 first.setNext(first) 的意思就是first的下一个结点还是first。

 

 

 最后的也很好理解 first存储每次开始数的结点 出列以后first就要指向出列的boy的后一位

helper存储环形链表最后一个结点 以便数出某某boy后和数出的next连接 继续构成循环链表

其实你会发现 helper一直在first前面一个结点

下面是测试类:

 结果:

 这样就结束啦(忽略了一些类的代码不影响理解)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/695415.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号