Assume that linked lists of int are implemented with the following Node class. class Node { int item; Node next; } Consider the following function, whose intention is to reverse the elements of a list starting at Node toBeReversed. public Node reverse (Node x){ return reverse (x, null); } public Node reverse (Node x, Node alreadyReversed) { /∗ code ∗/ } Which of the following replacements for /∗ code ∗/ returns the required value for reverse? I if (x== null) return alreadyReversed; Node y = x.next; x. next = alreadyReversed; return reverse (y,x); II while (x ! = null) { Node y = x; x = x.next; y.next = alreadyReversed; alreadyReversed = y; } return alreadyReversed; III while (x ! = null) { x.next = alreadyReversed; alreadyReversed = x; x = x.next:} return alreadyReversed; a. III b. I, II and III c. I only d. I and III only e. II and III only f. I and II only g. II only