美文网首页
java小孩丢手绢问题

java小孩丢手绢问题

作者: Mr_馮 | 来源:发表于2017-05-21 14:22 被阅读0次

    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);

    }

    }

    相关文章

      网友评论

          本文标题:java小孩丢手绢问题

          本文链接:https://www.haomeiwen.com/subject/gtamxxtx.html