约瑟夫环算法的Java实现代码
相信大家都知道,这是一个新的算法问题。约瑟夫环的C语言实现是指针链表的形式。java实现呢?我的是内部类的形式。
算法描述:N个人组成一个圈,每个人的数字不一样。选择一个人作为起点,然后顺时针从1数到k。每数到k的人退出圈子,圈子缩小,然后下一个人从1继续。找到最后发起圈子的人的原号码。
程序实现:
公类约瑟夫圈{
私类节点{
公类节点下一个节点;
公共布尔标志;
}
私有节点[]列表;
public Joseph circle(){
list = new Node[30];
int I;
for(I = 0;i < 30i++){
Node Node = new Node();
node . flag = true;
if (i > 0) {
list[i - 1]。nextnode =节点;
}
list[I]= node;
}
列表[i - 1]。next node = list[0];
}
public void start(){
Node Node = list[29];
for(int I = 0;i < 135i++){
if((I+1)% 8 = = 0){
node . flag = false;
node . next node = node . next node . next node;
} else {
node = node . next node;
}
}
}
public void print(){
Node = list[29];
for(int I = 0;i < 30i++){
if(node . flag){
system . out . print(" # ");
} else {
system . out . print(" @ ");
}
node = node . next node;
}
}
public static void main(String[]args){
Joseph circle JC = new Joseph circle();
JC . start();
JC . print();
}
}
0条评论