环节点类
public class Littlechild {
public Littlechild next;
public int number;
public Littlechild(int i)
{
number=i;
}
@Override
public String toString() {
return "Littlechild{" +
"number=" + number +
'}';
}
}
链表的实现类
public class CircleLinkedList {
private Littlechild first;
public static int count;
public CircleLinkedList()
{
first=new Littlechild(-1);
}
public void showChild()
{
Littlechild temp=first;
if (temp.next==null)
{
return;
}
while (temp.next!=first)
{
System.out.println(temp);
temp=temp.next;
}
System.out.println(temp);
}
public void AddNums(int n) {
count=n;
Littlechild Curchild = null;
for (int i =1; i < n+1; i++) {
Littlechild child=new Littlechild(i);
if (i == 1) {
first = child;
first.next = first;
Curchild = first;
}else {
Curchild.next =child;
child.next=first;
Curchild=child;
}
}
}
public void outofCir(int start,int cross,int count)
{
if (start<0||start>count||cross>count||first.next==null)
{
System.out.println("不符合游戏规则");
return;
}
Littlechild helper = null;
Littlechild temp=first;
while (temp.number!=start)
{
temp=temp.next;
}
while (count!=1)
{
for (int i = 1; i <cross ; i++) {
helper=temp;
temp=temp.next;
}
System.out.println("小孩"+temp.number+"出圈");
helper.next=temp.next;
temp=temp.next;
count--;
}
System.out.println("最后一个小孩"+temp.number+"出圈");
}
}