public Node deleteNodes(Node head){
        if(head == null){
            return null;
        }
        Node nextNode = deleteNodes(head.next);
        if(head.data > maxFound){
            maxFound = head.data;
        }
        if(maxFound > head.data){
            return nextNode;
        }
        head.next = nextNode;
        return head;
    }
http://www.geeksforgeeks.org/delete-nodes-which-have-a-greater-value-on-right-side/
Test cases
Sorted list
reverse sorted list
0 1 or more nodes in the list
src/com/interview/linklist/DeleteNodeWithGreaterValueOnRight.java