public Node<T> findCycleStart() {

        Node slow = head;
        Node fast = head;

        do {
          if(slow.next!=null) {
              slow = slow.next;
          } else {
              return null;
          }

          if(fast.next != null && fast.next.next!=null) {
              fast  =fast.next.next;
          } else {
              return null;
          }

        } while(slow != fast) ;

        Node cursor = head;
        while(slow != cursor) {
            if(slow.next != null) {
                slow = slow.next;
            } else {
                return null;
            }

            if(cursor.next != null) {
                cursor = cursor.next;
            } else {
                return null;
            }
        }

        return cursor;


    }