File tree 1 file changed +28
-0
lines changed
src/me/ramswaroop/linkedlists 1 file changed +28
-0
lines changed Original file line number Diff line number Diff line change 12
12
*/
13
13
public class ReverseList <E > extends SingleLinkedList <E > {
14
14
15
+ /**
16
+ * Reverses the linked list using 3 references prev, curr and next.
17
+ *
18
+ * @param node
19
+ */
15
20
public void reverseList (SingleLinkedNode <E > node ) {
16
21
SingleLinkedNode <E > prev = node ;
17
22
SingleLinkedNode <E > curr = node .next ;
@@ -25,6 +30,27 @@ public void reverseList(SingleLinkedNode<E> node) {
25
30
head = prev ;
26
31
}
27
32
33
+ /**
34
+ * Recursive method to reverse a linked list.
35
+ *
36
+ * @param node
37
+ * @return
38
+ */
39
+ public SingleLinkedNode <E > recursiveReverseList (SingleLinkedNode <E > node ) {
40
+ if (node == null ) return null ;
41
+
42
+ SingleLinkedNode <E > nextNode = recursiveReverseList (node .next );
43
+
44
+ if (nextNode == null ) {
45
+ head .next = null ; // head will be the last node so head.next = null;
46
+ head = node ;
47
+ } else {
48
+ nextNode .next = node ;
49
+ }
50
+
51
+ return node ;
52
+ }
53
+
28
54
public static void main (String a []) {
29
55
ReverseList <Integer > linkedList = new ReverseList <>();
30
56
linkedList .add (11 );
@@ -35,5 +61,7 @@ public static void main(String a[]) {
35
61
linkedList .printList ();
36
62
linkedList .reverseList (linkedList .getNode (0 ));
37
63
linkedList .printList ();
64
+ linkedList .recursiveReverseList (linkedList .getNode (0 ));
65
+ linkedList .printList ();
38
66
}
39
67
}
You can’t perform that action at this time.
0 commit comments