content: package linkedlist;
  
  public class CheckIfContainsCycle {
  
  
      public static boolean isCyclic(LinkedList linkedList) {
          LinkedList.Node fast = linkedList.head();
          LinkedList.Node slow = linkedList.head();
  
          while (fast != null && fast.next() != null) {
              fast = fast.next().next();
              slow = slow.next();
  
              if (fast == slow) {
                  return true;
              }
          }
          return false;
      }
  
      private static class LinkedList {
  
          private LinkedList.Node head;
          private LinkedList.Node tail;
  
          public LinkedList() {
              head = new LinkedList.Node("head");
              tail = head;
          }
  
          public void add(LinkedList.Node node) {
              tail.setNext(node);
              tail = node;
          }
  
          public void appendIntoTail(Node node) {
              Node current = head;
              while (current.next() != null) {
                  current = current.next();
              }
              current.setNext(node);
          }
  
          public LinkedList.Node head() {
              return head;
          }
  
          public static class Node {
              private LinkedList.Node next;
              private String data;
  
              public Node(String data) {
                  this.data = data;
              }
  
              public LinkedList.Node next() {
                  return next;
              }
  
              public void setNext(LinkedList.Node next) {
                  this.next = next;
              }
  
              public String data() {
                  return data;
              }
  
              public void setData(String data) {
                  this.data = data;
              }
          }
      }
  
  
      public static void main(String[] args) {
  
          LinkedList linkedList = new LinkedList();
          linkedList.appendIntoTail(new LinkedList.Node("101"));
          LinkedList.Node cycle = new LinkedList.Node("201");
          linkedList.appendIntoTail(cycle);
          linkedList.appendIntoTail(new LinkedList.Node("301"));
          linkedList.appendIntoTail(new LinkedList.Node("401"));
          linkedList.appendIntoTail(cycle);
  
          System.out.println(isCyclic(linkedList));
      }
  }
  