问题描述

代码实现
package com.atguigu.linkedlist;import com.sun.org.apache.bcel.internal.generic.NEW;
public class Josepfu {public static void main(String[] args) {CircleSingleLinkedList circleSingleLinkedList=new CircleSingleLinkedList();circleSingleLinkedList.addBoy(125);circleSingleLinkedList.showBoy();circleSingleLinkedList.countBoy(10,20,125);}
}
class CircleSingleLinkedList{private Boy first=null;public void addBoy(int nums){if(nums<1){System.out.println("nums的值不正确");return;}Boy curBoy=null;for (int i = 1; i <=nums; i++) {Boy boy=new Boy(i);if(i==1){first=boy;first.setNext(first);curBoy=first;}else {curBoy.setNext(boy);boy.setNext(first);curBoy=boy;}}}public void showBoy(){if(first==null){System.out.println("没有任何小孩");return;}Boy curBoy=first;while (true){System.out.println("小孩的编号"+curBoy.getNo());if (curBoy.getNext()==first){break;}curBoy=curBoy.getNext();}}public void countBoy(int startNo,int countNum,int nums){if(first==null||startNo<1||startNo>nums){System.out.println("参数输入有误,请重新输入");return;}Boy helper=first;while (true){if(helper.getNext()==first){break;}helper=helper.getNext();}for (int j = 0; j < startNo - 1; j++) {first=first.getNext();helper=helper.getNext();}while (true){if (helper==first){break;}for (int j = 0; j < countNum - 1; j++) {first=first.getNext();helper=helper.getNext();}System.out.println("小孩"+first.getNo()+"出圈");first=first.getNext();helper.setNext(first);}System.out.println("最后留在圈中的小孩编号"+helper.getNo());}}
class Boy{private int no;private Boy next;public Boy(int no){this.no=no;}public int getNo() {return no;}public void setNo(int no) {this.no = no;}public Boy getNext() {return next;}public void setNext(Boy next) {this.next = next;}
}