Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 90d6777

Browse files
author
Ram swaroop
committed
reverse linkedlist done recursively
1 parent c34ba22 commit 90d6777

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

src/me/ramswaroop/linkedlists/ReverseList.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
*/
1313
public class ReverseList<E> extends SingleLinkedList<E> {
1414

15+
/**
16+
* Reverses the linked list using 3 references prev, curr and next.
17+
*
18+
* @param node
19+
*/
1520
public void reverseList(SingleLinkedNode<E> node) {
1621
SingleLinkedNode<E> prev = node;
1722
SingleLinkedNode<E> curr = node.next;
@@ -25,6 +30,27 @@ public void reverseList(SingleLinkedNode<E> node) {
2530
head = prev;
2631
}
2732

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+
2854
public static void main(String a[]) {
2955
ReverseList<Integer> linkedList = new ReverseList<>();
3056
linkedList.add(11);
@@ -35,5 +61,7 @@ public static void main(String a[]) {
3561
linkedList.printList();
3662
linkedList.reverseList(linkedList.getNode(0));
3763
linkedList.printList();
64+
linkedList.recursiveReverseList(linkedList.getNode(0));
65+
linkedList.printList();
3866
}
3967
}

0 commit comments

Comments
 (0)