diff --git a/Loop linked list b/Loop linked list new file mode 100644 index 0000000..6dae551 --- /dev/null +++ b/Loop linked list @@ -0,0 +1,72 @@ +# Python program to detect loop +# in the linked list + +# Node class +class Node: + + # Constructor to initialize + # the node object + def __init__(self, data): + self.data = data + self.next = None + +class LinkedList: + + # Function to initialize head + def __init__(self): + self.head = None + + # Function to insert a new + # node at the beginning + def push(self, new_data): + new_node = Node(new_data) + new_node.next = self.head + self.head = new_node + + # Utility function to print it + # the linked LinkedList + def printList(self): + temp = self.head + while(temp): + print (temp.data, end =" ") + temp = temp.next + + + def detectLoop(self): + s = set() + temp = self.head + while (temp): + + # If we have already has + # this node in hashmap it + # means their is a cycle + # (Because you we encountering + # the node second time). + if (temp in s): + return True + + # If we are seeing the node for + # the first time, insert it in hash + s.add(temp) + + temp = temp.next + + + return False + +# Driver program for testing +llist = LinkedList() +llist.push(20) +llist.push(4) +llist.push(15) +llist.push(10) + +# Create a loop for testing +llist.head.next.next.next.next = llist.head; + +if( llist.detectLoop()): + print ("Loop found") +else : + print ("No Loop ") + +