Home Blog Coding Problem Practice

Reverse the LinkedList

Published:


public class ReverseLinkedList {


    private static class SinglyLinkedList {

        Node head;



        // prints content of double linked list
        void printList(Node node) {
            while (node != null) {
                System.out.print(node.data + " ");
                node = node.next;
            }
        }



        Node reverseV2( Node node, Node previous) {

//	    	System.out.println(node.data + "->" + (previous == null ? "null" : previous.data) );

            if ( node.next != null) {

                Node next1 = node.next;

                node.next = previous;

                return reverseV2(next1, node);

            } else {

                node.next = previous;
                return node;

            }


        }

    }


    private static class Node {

        int data;
        Node next;
        Node(int d) {
            data = d;
        }

    }


    public static void main(String[] args) {


        SinglyLinkedList list = new SinglyLinkedList();
        list.head = new Node(1);
        list.head.next = new Node(2);
        list.head.next.next = new Node(3);
        list.head.next.next.next = new Node(4);

        System.out.println("Original Linked list is :");
        list.printList(list.head);
        System.out.println("");
        list.head = list.reverseV2(list.head, null);
        System.out.println("");
        System.out.println("Reversed linked list : ");
        list.printList(list.head);
    }

}

debug points

linklist null->1->2->3->4

reverse(1,null)
next1 2,
1->null
reverse(2, 1)
next1 3,
2->1->null
reverse(3, 2)
next1 4,
3->2->1->null
reverse(4, 3)
4->3->2->1->null
return 4
Comment