public class Test1 {
public static void main(String[] args) {
CycLink cycLink=new CycLink();
cycLink.setLen(5);
cycLink.createLink();
cycLink.show();
}
}
class Child{
int no;
Child nextchild=null;
public Child(int no) {
this.no=no;
}
}
class CycLink
{
Child firstChild=null;
int len=0;
Child temp=null;
int k=0;
int m=0;
public void setLen(int len){
this.len=len;
}
//初始化环形链表
public void createLink(){
// for(int i=0;i<=len;i++){
// //创建一个小孩
// Child ch=new Child(i);
//
// }
for(int i=0;i<=len;i++){
if (i==1) {
Child ch=new Child(i);
//创建第一个小孩
this.firstChild=ch;
this.temp=ch;
}
else
{
if (i==len) {
Child ch=new Child(i);
temp.nextchild=ch;
temp=ch;
temp.nextchild=this.firstChild;
}
else{
//继续创建别的小孩
Child ch=new Child(i);
temp.nextchild=ch;
temp=ch;
}
}
}
}//初始化环形表
public void show(){
//定义一个跑龙套的
Child temp=this.firstChild;
do {
System.out.println(temp.no);
temp=temp.nextchild;
} while (temp!=firstChild);
}
public void play(){
Child temp=this.firstChild;
//1 先找到开始数数的人
for (int i = 1; i <k; i++) {
temp=temp.nextchild;
}
while(this.len!=1){
//数m下
for(int j=1;j<m;j++){
temp=temp.nextchild;
}//往后面移了m下
//找到出圈的前一个小孩
Child temp2=temp;
while(temp2.nextchild!=temp){
temp2=temp2.nextchild;
}//temp往前面移了一下
//将数到m的小孩,退出圈 temp2 后面就是temp
temp2.nextchild=temp.nextchild;
//此举删除了 temp
temp=temp.nextchild;
this.len--;
}
}
//设置从第几个开始数数
public void setK(int k){
this.k=k;
}
}
public static void main(String[] args) {
CycLink cycLink=new CycLink();
cycLink.setLen(5);
cycLink.createLink();
cycLink.show();
}
}
class Child{
int no;
Child nextchild=null;
public Child(int no) {
this.no=no;
}
}
class CycLink
{
Child firstChild=null;
int len=0;
Child temp=null;
int k=0;
int m=0;
public void setLen(int len){
this.len=len;
}
//初始化环形链表
public void createLink(){
// for(int i=0;i<=len;i++){
// //创建一个小孩
// Child ch=new Child(i);
//
// }
for(int i=0;i<=len;i++){
if (i==1) {
Child ch=new Child(i);
//创建第一个小孩
this.firstChild=ch;
this.temp=ch;
}
else
{
if (i==len) {
Child ch=new Child(i);
temp.nextchild=ch;
temp=ch;
temp.nextchild=this.firstChild;
}
else{
//继续创建别的小孩
Child ch=new Child(i);
temp.nextchild=ch;
temp=ch;
}
}
}
}//初始化环形表
public void show(){
//定义一个跑龙套的
Child temp=this.firstChild;
do {
System.out.println(temp.no);
temp=temp.nextchild;
} while (temp!=firstChild);
}
public void play(){
Child temp=this.firstChild;
//1 先找到开始数数的人
for (int i = 1; i <k; i++) {
temp=temp.nextchild;
}
while(this.len!=1){
//数m下
for(int j=1;j<m;j++){
temp=temp.nextchild;
}//往后面移了m下
//找到出圈的前一个小孩
Child temp2=temp;
while(temp2.nextchild!=temp){
temp2=temp2.nextchild;
}//temp往前面移了一下
//将数到m的小孩,退出圈 temp2 后面就是temp
temp2.nextchild=temp.nextchild;
//此举删除了 temp
temp=temp.nextchild;
this.len--;
}
}
//设置从第几个开始数数
public void setK(int k){
this.k=k;
}
}