首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

第05章 数组 12 习题 10

2012-09-06 
第05章 数组 12 练习 10鱼欲遇雨:每日都学习一点,持之以恒,天道酬勤!不能用电脑时,提前补上!(2012.8.23)注

第05章 数组 12 练习 10

鱼欲遇雨:每日都学习一点,持之以恒,天道酬勤!不能用电脑时,提前补上!(2012.8.23)

注:23号回学校,提前补这一天!

 

小练习:

500个人,一个人开始数,1,2,3,1,2,3.。。是3的人退出,一直循环都最后一个人,这个人是第几个人?(面向对象的解法)(完整代码)

 

//Count3Quit2.javapublic 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;Kid 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.right.left = k.left; k.left.right = k.right;  if(k == first) { first = k.right; }else if(k == last) { last = k.left; }}count--;}}


 

热点排行