java小孩丢手绢问题

public class Demo

{

public static void main(String[] args)

{

CyLink cyLink = new CyLink();

cyLink.setlen(5);

cyLink.setK(2);

cyLink.setM(2);

cyLink.CreateLink();

// 打印创建的环链接的样式

// cyLink.show();

cyLink.play();

}

}

class Child

{

int no;

Child nextchild = null;

Child indexChild = null;

public Child(int no)

{

this.no = no;

}

}

class CyLink

{

Child firstchild = null;

Child temp = null;

int len;

int k = 0;

int M = 0;

public void setlen(int len)

{

this.len = len;

}

public void setK(int k)

{

this.k = k;

}

public void setM(int m)

{

this.M = m;

}

public void play()

{

Child temp = this.firstchild;

while (len != 1)

{

for (int i = 1; i < k; i++)

{

temp = temp.nextchild;

}

for (int j = 1; j < M; j++)

{

temp = temp.nextchild;

}

// 当前小孩的上个小孩的下个小孩指向当前小孩的下个小孩(让上一个小孩的nextchild指向当前小孩的nextchild)

temp.indexChild.nextchild = temp.nextchild;

// 当前小孩的下个小孩的上个小孩指向当前小孩的上个小孩(让下一个小孩的indexChild指向当前小孩的indexChild)

temp.nextchild.indexChild = temp.indexChild;

temp = temp.nextchild;

this.len--;

}

System.out.println("最后在圈里的人:" + temp.no);

}

// 定义环链接

public void CreateLink()

{

for (int i = 1; i <= len; i++)

{

// 创建第一个小孩

if (i == 1)

{

Child ch = new Child(i);

temp = ch;

firstchild = ch;

} else

{

Child ch = new Child(i);

// 创建最后一个小孩

if (i == len)

{

// 保存当前temp

Child index = temp;

// 当前temp的下一个小孩是刚创建的小孩

temp.nextchild = ch;

// 刚创建的小孩赋给temp

temp = ch;

// 刚创建的小孩的上一个小孩是index

temp.indexChild = index;

// 刚创建的小孩的上一个小孩是第一个小孩

temp.nextchild = firstchild;

// 第一个小孩的上一个小孩是最后创建的小孩

firstchild.indexChild = ch;

}

// 创建其他小孩

else

{

// 保存当前temp

Child index = temp;

// 当前temp的下一个小孩是刚创建的小孩

temp.nextchild = ch;

// 刚创建的小孩赋给temp

temp = ch;

// 刚创建的小孩的上一个小孩是index

temp.indexChild = index;

}

}

}

}

public void show()

{

Child temp = this.firstchild;

do

{

System.out.println(temp.no + "前:" + temp.indexChild.no + "后:" + temp.nextchild.no);

temp = temp.nextchild;

} while (temp != this.firstchild);

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,706评论 18 399
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,921评论 0 33
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 2,077评论 0 2
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 1,498评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,568评论 19 139

友情链接更多精彩内容