public class LoopList {
Node head = new Node(0);
static int position = 1;
LoopList(){
head.next = head;
}
void addNode(Node node)
{
Node temp = head;
Node cur = node;
while (temp.next != head)
{
temp = temp.next;
}
temp.next = cur;
cur.next = head;
}
void showList(){
Node temp = head;
while (temp.next != head)
{
System.out.println(temp.data);
temp = temp.next;
}
System.out.println(temp.data);
}
void joseph(int offset){
Node temp = head;
int tempPos = position;
while (temp.next != temp) {
for (int i = tempPos; i < tempPos + offset; i++) {
temp = temp.next;
position++;
}
System.out.println(temp.next.data);
temp.next = temp.next.next;
}
System.out.println(temp.data);
}
public static void main(String[] args) {
LoopList loopList = new LoopList();
loopList.addNode(new Node(1));
loopList.addNode(new Node(2));
loopList.addNode(new Node(3));
loopList.addNode(new Node(4));
loopList.addNode(new Node(5));
loopList.addNode(new Node(6));
loopList.showList();
System.out.println("---------------------------------");
loopList.joseph(2);
}
}
大致实现,健壮性有待加强。