public class a1{
public static void main(String args []){
Circle c = new Circle (500);
Kid k=c.first; System.out.println(k.getid()) ;
while(c.first!=c.last){
k = k.right.right;
c.quit(k); System.out.println("第"+k.getid()+"个小孩退出") ;
k = k.right;
}
System.out.print(c.first.getid());
}
}
class Kid {
static int num ; int id = num; / 取到每新建一个对象时候对应的ID 需要用两个变量
Kid () { 一个类变量一个实例变量 只用类变量会取最终总数
num ++; / 只用实例变量 会取初始数值
}
Kid left;
Kid right;
int getid() {
return id;
}
}
class Circle {
Circle (int n) {
for (int i=0;i<n;i++) add();
}
int count=0;
Kid first;
Kid last;
void add ( ) { /// 建圈的时候要完整 不能建成单向的圈 FIST 和新建的(LAST)要接起来!!
Kid k = new Kid (); // 不然会出现最后一个人再往右边的时候出现空指针异常
if (count==0) { first =last=k;}
else {
first.left = k ;
last.right = k ;
k.right = first;
k.left = last;
last = k ;
}
count++;
}
void quit ( Kid k) {
k.left.right = k.right;
k.right.left = k.left;
if (k==first) first = k.right;
if (k==last) last = k.left;
}
}