File tree 3 files changed +57
-3
lines changed 3 files changed +57
-3
lines changed Original file line number Diff line number Diff line change @@ -102,8 +102,9 @@ public static void main(String[] args) {
102
102
out .println ("4. Remove at index" );
103
103
out .println ("5. Remove item" );
104
104
out .println ("6. Edit item" );
105
- out .println ("7. Print" );
106
- out .println ("8. Exit module" );
105
+ out .println ("7. Delete LinkedList" );
106
+ out .println ("8. Print" );
107
+ out .println ("9. Exit module" );
107
108
k2 = Integer .parseInt (in .nextLine ());
108
109
int item , index ;
109
110
switch (k2 ) {
@@ -146,9 +147,14 @@ public static void main(String[] args) {
146
147
singleLinkedList .printList ();
147
148
break ;
148
149
case 7 :
150
+ out .println ("LinkedList deleted." );
151
+ singleLinkedList .clear ();
149
152
singleLinkedList .printList ();
150
153
break ;
151
154
case 8 :
155
+ singleLinkedList .printList ();
156
+ break ;
157
+ case 9 :
152
158
continue chooseModule ;
153
159
default :
154
160
out .println ("Wrong choice!" );
Original file line number Diff line number Diff line change @@ -61,7 +61,18 @@ public void addLast(E item) {
61
61
62
62
@ Override
63
63
public void clear () {
64
-
64
+ // Clearing all of the links between nodes is "unnecessary", but:
65
+ // - helps a generational GC if the discarded nodes inhabit
66
+ // more than one generation
67
+ // - is sure to free memory even if there is a reachable Iterator
68
+ for (SingleLinkedNode <E > node = head ; node != null ; ) {
69
+ SingleLinkedNode <E > next = node .next ;
70
+ node .item = null ;
71
+ node .next = null ;
72
+ node = next ;
73
+ }
74
+ head = null ;
75
+ size = 0 ;
65
76
}
66
77
67
78
@ Override
Original file line number Diff line number Diff line change
1
+ package me .ramswaroop .linkedlists ;
2
+
3
+ import me .ramswaroop .common .SingleLinkedList ;
4
+ import me .ramswaroop .common .SingleLinkedNode ;
5
+
6
+ /**
7
+ * Created by IntelliJ IDEA.
8
+ *
9
+ * @author: ramswaroop
10
+ * @date: 6/18/15
11
+ * @time: 10:34 PM
12
+ */
13
+ public class MiddleNode <E > extends SingleLinkedList <E > {
14
+
15
+ public SingleLinkedNode <E > getMiddleNode (SingleLinkedNode <E > node ) {
16
+ SingleLinkedNode <E > slow = node ;
17
+ SingleLinkedNode <E > fast = node ;
18
+ while (fast != null && fast .next != null ) {
19
+ slow = slow .next ;
20
+ fast = fast .next .next ;
21
+ }
22
+ return slow ;
23
+ }
24
+
25
+ public static void main (String a []) {
26
+ MiddleNode <Integer > linkedList = new MiddleNode <>();
27
+ linkedList .add (11 );
28
+ linkedList .add (22 );
29
+ linkedList .add (33 );
30
+ linkedList .add (44 );
31
+ linkedList .add (55 );
32
+ linkedList .add (66 );
33
+ linkedList .add (77 );
34
+ linkedList .add (88 );
35
+ System .out .println (linkedList .getMiddleNode (linkedList .getNode (0 )).item );
36
+ }
37
+ }
You can’t perform that action at this time.
0 commit comments