{}
run-icon
Main.cs
// Online C# Editor for free // Write, Edit and Run your C# code using C# Online Compiler using System; public class Node { public Node(int num) { Data = num; Next = null; } public int Data; public Node Next; } public class LinkedList { public Node head; public void AddNode(int num) { Node newNode = new Node(num); if(head == null) { head = newNode; return; } Node current = head; while(current.Next != null) { current = current.Next; } current.Next = newNode; } public void CreateLoop() { if(head == null) { return; } Node loopNode = null; Node temp = head; while(temp.Next != null) { if(temp.Data == 30) { loopNode = temp; } temp = temp.Next; } temp.Next = loopNode; } // Floyd Algorithm // using slow and fast pointers public bool DetectLoopByFloydAlgorithm() { Node slow = head; Node fast = head; while(fast != null && fast.Next != null) { slow = slow.Next; fast = fast.Next.Next; if(slow == fast) return true; } return false; } // Reverse the Linked List // Using Recursion public void ReverseTraversal(Node node) { if(node == null) { Console.WriteLine("Linked list is empty"); return; } ReverseTraversal(node.Next); Console.WriteLine(node.Data); } } public class HelloWorld { public static void Main(string[] args) { LinkedList l1 = new LinkedList(); l1.AddNode(10); l1.AddNode(20); l1.AddNode(30); l1.AddNode(40); l1.CreateLoop(); bool isLoop = l1.DetectLoopByFloydAlgorithm(); string outputText = isLoop ? "Loop detected" : "No Loop detected"; Console.WriteLine(outputText); l1.ReverseTraversal(l1.head); } }
Output