private ListNode reverseList(ListNode head) {
//        LinkedList.printList("ReadyForReverse : ",head);
        if(head == null || head.next == null) return head;
        ListNode newH = new ListNode(0);
        newH.next = head;
        ListNode p1 = head;
        ListNode p2;
        while(p1.next != null)
        {
            p2 = p1.next;
            p1.next = p2.next;
            p2.next = newH.next;
            newH.next = p2;
        }
//        LinkedList.printList("AfterReverse : ",head);
        return newH.next;
    }