package nhb;
public class Child {
public int number;
public Child nextChild = null;
public Child(int no){
this.number = no;
}
}
/***************************************************
****************************************************
****************************************************/
package com.nhb.pojo;
import nhb.Child;
public class LianBiao {
Child firstChild = null;
Child temp = null;
int len = 0;//小孩人数
int k = 0;//第几个小孩
int m = 0;//要出列的小孩
//设置m,即需要出列的小孩
public void setM(int m)
{
this.m=m;
}
//设置链表的大小,即小孩的人数
public void setLen(int len)
{
this.len=len;
}
//从第几个人开始数数
public void setK(int k)
{
this.k=k;
}
/*********将链表初始化***********/
public void createLianBiao(){
for(int i = 1; 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;
while(temp!=this.firstChild){
System.out.println(temp.number);
temp = temp.nextChild;
}
}
/**********开始************/
public void play(){
Child temp=this.firstChild;
//找到开始数的小孩
for (int i=1;i<k;i++)
{
temp=temp.nextChild;
}
//2.数m下,找到需要出列的小孩
while(this.len!=1){
for(int j=1;j<m;j++)
{
temp=temp.nextChild;
}
//找到要出列的前一个小孩
Child temp2=temp;
while(temp2.nextChild!=temp)
{
temp2=temp2.nextChild;
}
//3.让数到m的小孩出列,退出
temp2.nextChild=temp.nextChild;
temp=temp.nextChild;
this.len--;
}
System.out.println("最后出列的小孩:"+temp.number);
}
public static void main(String[] args) {
LianBiao cyclink=new LianBiao();
cyclink.setLen(10);
cyclink.createLianBiao();
cyclink.setK(3);
cyclink.setM(3);
cyclink.show();
cyclink.play();
}
}
课堂练习
最新推荐文章于 2019-06-09 18:21:00 发布