public static Node root = null;
public static void Main()
root = Add(root.Next, 4);
Console.WriteLine("\n\n\t\t\tOriginal Linked List\n");
Console.WriteLine("\n\n\t\t\tLinked List has loop? {0}\n", ListHasLoop2() ? "YES" : "NO");
Console.WriteLine("\n\n\t\t\tReverse(Iteration) Linked List \n");
Console.WriteLine("\n\n\t\t\tReverse(Recursive) Linked List \n");
Console.WriteLine("\n\n\t\t\tDelete Middle Item from Linked List \n");
public static bool ListHasLoop2(){
while(fast !=null && fast.Next != null){
if(fast == null || fast.Next == null)
Console.WriteLine("\n Circled @ " +slow.Value);
public static Node Add(Node root, int val){
Node node = new Node(val);
public static void Print(Node node){
Console.Write(node.Value + " -> ");
public static void DeleteModdleItem(){
public static void Reverse(){
public static void ReverseRec(Node node){
public int Value{get;set;}
public Node Next{get;set;}