一步一步学习java数组学习(ch5)数3退1记录最后留下来的在队列中的位置

刚才老师讲了java的课程,不过我在视频中已经学过,就算是当回顾吧。同学们都说java老师讲的不好,

我觉得呢,老师是好人,但不是好老师。。或许他那时候当程序员 的时候是比较牛逼的吧。。但愿,

只是现在呢。。有点偷懒了吧,讲的不太爽。。不过我看了 尚学堂的视频看到了 第05章_数组_练习8把代码自己凭记忆

敲了一遍。。以后参考时候用。。我这个不算抄袭吧。。只是记录一下方便以后用 2011-11-1911:12:18

 1 public class Test{
2 public static void main(String[] args){
3 boolean[] a = new boolean[500];
4 for(int i=0;i<a.length;i++){
5 a[i] = true;
6 }
7
8 int leftcount = a.length;
9 int count = 0;
10 int index = 0;
11 while(leftcount>1){
12 if(a[index]==true){
13 count++;
14 if(count == 3){
15 leftcount--;
16 a[index] = false;
17 count=0;
18 }
19 }
20 index++;
21 if(index == a.length){
22 index = 0;
23 }
24 }
25 for(int i=0;i<a.length;i++){
26 if(a[i] == true){
27 System.out.println(i);
28 }
29 }
30 }
31 }

 利用回环链表来实现的。。

 1 public class Count3Quit1{
2 public static void main(String[] args){
3
4 KidCircle kc = new KidCircle(500);
5 Kid k = kc.first;
6 int countNum = 0;
7 while(kc.count>1){
8 countNum ++;
9 if(countNum==3){
10 countNum = 0;
11 kc.delete(k);
12
13 }
14 k = k.right;
15 }
16 System.out.println(kc.first.id);
17
18 }
19 }
20
21
22 class Kid{
23 int id;
24 Kid left;
25 Kid right;
26 }
27
28 class KidCircle{
29 int count = 0;
30 Kid first,last;
31
32 KidCircle(int n){
33 for(int i=0;i<n;i++){
34 add();
35 }
36
37 }
38
39 void add(){
40 Kid k = new Kid();
41 k.id = count;
42 if(count<=0){
43 k.left = k;
44 k.right = k;
45 first = k;
46 last = k;
47 }else {
48 last.right = k;
49 k.left = last;
50 k.right = first;
51 first.left = k;
52 last = k;
53 }
54 count ++;
55 }
56
57 void delete(Kid k){
58 if(count<=0){
59 return;
60 }else if(count==1){
61 first = last = null;
62 }else{
63 k.left.right = k.right;
64 k.right.left = k.left;
65
66
67
68 if(k == first){
69 first = k.right;
70 }else if(k == last){
71 last = k.left;
72 }
73 }
74 count --;
75 }
76
77 }

 

posted @ 2011-11-19 11:06  ①只耳  阅读(206)  评论(0编辑  收藏  举报