Java约瑟夫环面向对象,[Java] 数组-04 面向对象的约瑟夫环 (Good!)

package com.bjsxt.chap5;

public class Count3Quit2 {

public static void main(String[] args) {

KidCircle kc = new KidCircle(500);

int countNum = 0;

Kid k = kc.first;

while (kc.count > 1) {

countNum ++;

if (countNum == 3) {

countNum = 0;

kc.delete(k);

}

k = k.right;

}

System.out.println(kc.first.id);

}

}

class Kid {

int id;

Kid left;

Kid right;

}

class KidCircle {

int count = 0;

Kid first, last;

KidCircle(int n) {

for (int i = 0; i < n; i++) {

add();

}

}

void add() {

Kid k = new Kid();

k.id = count;

if (count <= 0) {

first = k;

last = k;

k.left = k;

k.right = k;

}

else {

last.right = k;

k.left = last;

k.right = first;

first.left = k;

last = k;

}

count++;

}

void delete(Kid k) {

if (count <= 0) return;

else if (count == 1) {

first = last = null;

}

else {

k.left.right = k.right;

k.right.left = k.left;

if (k == first) {

first = k.right;

}

else if (k == last) {

last = k.left;

}

}

count --;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值