package FistTest;
public class Demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
CycLink cyclink =new CycLink();
cyclink.setLen(100);
cyclink.creatLink();
cyclink.setK(2);
cyclink.setM(2);
cyclink.show();
cyclink.play();
}
}
class Child{
int no;
Child nextChileChild=null;
public Child(int no){
this.no=no;
}
}
//环形链表
class CycLink{
//先定义一个指向链表第一个小孩的那个引用
//指向第一个小孩的引用,不能动
Child firstChild=null;
Child temp=null;
int len=0;//表示共有几个小孩
int k;
int m;
//设置链表大小
public void setLen(int len){
this.len=len;
}
public void setK(int k){
//设置第几个人开始数数
this.k=k;
}
public void setM(int m){
//设置m
this.m=m;
}
public void play(){
//1找到开始数数的人
Child temp=this.firstChild;
for(int i=1;i<k;i++){
temp=temp.nextChileChild;
}
//数M下
while(this.len!=1){
for (int j = 1; j < m; j++) {
temp=temp.nextChileChild;
}
Child temp2=temp;//找到要出圈的前一个小孩
while (temp2.nextChileChild!=temp) {
temp2=temp2.nextChileChild;
}
//讲数到M的小孩 退出圈
temp2.nextChileChild=temp.nextChileChild;
temp=temp.nextChileChild;
System.out.println("现在出圈的是"+temp.no);
this.len--;
}
//打印最优一个小孩
System.out.print("最后出圈的是:"+temp.no);
}
//初始化链表
public void creatLink(){
for (int i = 1; i <= len; i++) {
if (i==1) {
//创建第一小孩
Child child=new Child(i);
this.firstChild=child;
this.temp=child;
}else
{
if (i==len) {
Child child =new Child(i);
temp.nextChileChild=child;
temp=child;
temp.nextChileChild=this.firstChild;
}else {
//继续创建小孩
Child child =new Child(i);
temp.nextChileChild=child;
temp=child;}
}
}
}
public void show(){
Child temChild=this.firstChild;
do {
System.out.println(temChild.no+"###");
temChild=temChild.nextChileChild;
} while (temChild!=this.firstChild);
}
}
分享到:
相关推荐
java 实现的链表简单的丢手绢游戏,可以研究一下链表的机制,还算一般复杂
java解决丢手帕问题,运用了链表来解决
用java实现的丢手帕问题,即有n个人围成圈,从第k个人开始从1报数,报到第m个人时出局,从出局人的下一个开始从新报数,报到第m个人时出局......如此循环直至最后一人出局
传统智力游戏——丢手绢.docx
《音乐游戏:丢手绢》.ppt
约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”)
经典丢手绢的程序,使用c++纯文本编程的。
主要介绍了java基于双向环形链表解决丢手帕问题的方法,简单描述了丢手帕问题,并结合实例形式给出了Java基于双向环形链表解决丢手帕问题的步骤与相关操作技巧,需要的朋友可以参考下
设编号为1,2,… n的n个人围坐一圈,约定编号为k(1)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。...
约瑟夫问题源码java版
艺术活动 《 漂亮的小手绢》——染纸.doc
丢手绢游戏教案.pdf
幼儿园教案2021-艺术活动 《 漂亮的小手绢》——染纸.doc
大班游戏活动教案《丢手绢》.docx
丢手绢幼儿园教案___5篇.docx
经典的约瑟夫环问题,用java代码实现。没有使用数据结构的知识,更加深刻的理解java面向对象的思想
大班游戏课教案《丢手绢》润新教育.txt
大班游戏活动教案《丢手绢》润新教育.txt
幼儿园小班优秀游戏教案《丢手绢》润新教育.txt
小班游戏课教案《民间丢手绢》润新教育.txt