给你两个我曾经用java面向对象的思想写的这个实现的用法,你可以参考一下,用javascript写也是差不多的: package com.zhangyilin.count3quit1;public class Circle { private Kid first; private Kid last; private int size;
public static void main(String args[]) { Circle c = new Circle(500); int count = 1; Kid kid = c.getFirst(); int n = 500; // for (int i=0;i<100;i++) { // System.out.print(kid.getId()+","); // kid = kid.getRight(); // } while ( n > 1) { if (count == 3) { c.delKid(kid); //System.out.print(kid.getId()+","); count = 0; n--; } else { //System.err.print(kid.getId()+","); }
kid = kid.getRight();
count++; } System.out.println(kid.getId()); }
public Circle(int circleSize) {//表示要构造一个多大的圈 for (int i=0;i<circleSize;i++) { Kid kid = new Kid(i+1); if (i==0) { this.setFirst(kid); this.setLast(kid); kid.setRight(kid); kid.setLeft(kid); size++; } else { addKid(kid); } System.out.print(kid.getId()+","); } System.out.println(); }
package com.zhangyilin.count3quit1;public class Circle { private Kid first;
private Kid last;
private int size;
public static void main(String args[]) {
Circle c = new Circle(500);
int count = 1;
Kid kid = c.getFirst();
int n = 500;
// for (int i=0;i<100;i++) {
// System.out.print(kid.getId()+",");
// kid = kid.getRight();
// }
while ( n > 1) {
if (count == 3) {
c.delKid(kid);
//System.out.print(kid.getId()+",");
count = 0;
n--;
} else {
//System.err.print(kid.getId()+",");
}
kid = kid.getRight();
count++;
}
System.out.println(kid.getId());
}
public Circle(int circleSize) {//表示要构造一个多大的圈
for (int i=0;i<circleSize;i++) {
Kid kid = new Kid(i+1);
if (i==0) {
this.setFirst(kid);
this.setLast(kid);
kid.setRight(kid);
kid.setLeft(kid);
size++;
} else {
addKid(kid);
}
System.out.print(kid.getId()+",");
}
System.out.println();
}
public void addKid(Kid kid) {
last.setRight(kid);
kid.setLeft(last);
kid.setRight(first);
first.setLeft(kid);
this.setLast(kid);
size++;
} public void delKid(Kid kid) {
kid.getLeft().setRight(kid.getRight());
kid.getRight().setLeft(kid.getLeft());
size--;
}
public Kid getFirst() {
return first;
} public void setFirst(Kid first) {
this.first = first;
} public Kid getLast() {
return last;
} public void setLast(Kid last) {
this.last = last;
} public int getSize() {
return size;
} public void setSize(int size) {
this.size = size;
}
}package com.zhangyilin.count3quit1;public class Kid { private int id;//用于记录最后剩下的孩子是谁
private Kid left;
private Kid right; public Kid(int id) {
this.id = id;
}
public Kid getLeft() {
return left;
} public void setLeft(Kid left) {
this.left = left;
} public Kid getRight() {
return right;
} public void setRight(Kid right) {
this.right = right;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
}}