public class Node {

  Node next = null;
  int data;

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

  // Appends data to the end of the linked list
  private void appendToTail(int data) {

    Node curr = this;
    Node end = new Node(data);

    while(curr.next != null) {
      curr = curr.next;
    }

    curr.next = end;
  }

  // Iterate through the linked list
  private void traverseList() {
  }

  // Delete the node from linked list n with data
  private void delete(Node n, int data) {
  }

  // Find the median element in the linked list
  private void findMedianElement() {
  }


  // Example
  public static void main(String[] args) {

    Node head = new Node(10);

  }

}

@@ -553,34 +553,647 @@
 ate 
-void findMedianElement() %7B
+Node findMedianElement() %7B%0A    Node curr     = this;%0A    Node hopOnce  = curr;%0A    Node hopTwice = curr;%0A%0A    while(true) %7B%0A%0A      // Weve reached the end of the list, hopOnce is the median.%0A      if (hopTwice.next == null) %7B%0A        System.out.println(%22End Node Value: %5Ct%22    + hopTwice.data);%0A        System.out.println(%22Median Node Value: %5Ct%22 + hopOnce.data);%0A        return hopOnce;%0A      %7D%0A%0A      // hopTwice is one Node from the end, go to the end%0A      else if (hopTwice.next.next == null) %7B%0A        hopTwice = hopTwice.next;%0A      %7D%0A%0A      else %7B%0A        hopOnce = hopOnce.next;%0A        hopTwice = hopTwice.next.next;%0A      %7D%0A    %7D
 %0A  %7D
@@ -1207,16 +1207,31 @@
  Example
+ function calls
 %0A  publi
@@ -1297,16 +1297,15 @@
 de(10);%0A
-%0A
   %7D%0A%0A%7D%0A

Implement linked list findMedianElement.