@@ -18,7 +18,7 @@ public class SkipList<T extends Comparable<T>> implements IList<T> {
18
18
private static final Random seedGenerator = new Random ();
19
19
20
20
// Defaults
21
- private static final int LISTS = 31 ;
21
+ private static final int MAX = 31 ;
22
22
23
23
private int randomSeed = -1 ;
24
24
private Node <T > head = null ;
@@ -52,18 +52,22 @@ private void insertValueProbablistically(T value) {
52
52
head .value = value ;
53
53
node .value = oldHeadValue ;
54
54
}
55
- for (int i =level ; i >=0 ; i --) {
55
+ for (int i =MAX ; i >=0 ; i --) {
56
+ //System.out.println(this.getString(prev.value, i));
56
57
Node <T > next = prev .getNext (i );
57
58
while (next !=null ) {
58
59
if (next .value .compareTo (value )==1 ) break ;
59
60
prev = next ;
61
+ //System.out.println(this.getString(prev.value, i));
60
62
next = prev .getNext (i );
61
63
}
62
- node .setNext (i , next );
63
- if (next !=null ) next .setPrev (i , node );
64
+ if (i <= level ) {
65
+ node .setNext (i , next );
66
+ if (next !=null ) next .setPrev (i , node );
64
67
65
- prev .setNext (i , node );
66
- node .setPrev (i , prev );
68
+ prev .setNext (i , node );
69
+ node .setPrev (i , prev );
70
+ }
67
71
}
68
72
}
69
73
@@ -74,12 +78,12 @@ private void insertValueProbablistically(T value) {
74
78
public boolean add (T value ) {
75
79
if (head ==null ) {
76
80
// new list
77
- Node <T > node = new Node <T >(LISTS ,value );
81
+ Node <T > node = new Node <T >(MAX ,value );
78
82
head = node ;
79
83
} else {
80
84
insertValueProbablistically (value );
81
85
}
82
- // TODO: System.out.println(this.toString());
86
+ //System.out.println(this.toString());
83
87
size ++;
84
88
return true ;
85
89
}
@@ -239,8 +243,9 @@ public String getString(T value, int level) {
239
243
node = next ;
240
244
}
241
245
if (i >0 ) builder .append ("\n " );
242
- }
246
+ }
243
247
}
248
+ builder .append ("\n " );
244
249
return builder .toString ();
245
250
}
246
251
0 commit comments