cycle detection in linked list
class SinglyLinkedListNode:
def __init__(self, node_data):
self.data = node_data
self.next = None
class SinglyLinkedList:
def __init__(self):
self.head = None
self.tail = None
def insert_node(self, node_data):
node = SinglyLinkedListNode(node_data)
if not self.head:
self.head = node
else:
self.tail.next = node
self.tail = node
def has_cycle(head):
count = 0
temp = head
while temp:
if count == llist_count + 1:
return "Cycle detection is Found"
count += 1
temp = temp.next
return "No cycle detection is Found"
if __name__ == '__main__':
index = int(input("Enter the index where the last node need to connected:"))
llist_count = int(input("Enter the linked list count: "))
llist = SinglyLinkedList()
print("Enter the element to be added on linked list one by one")
for _ in range(llist_count):
llist_item = int(input())
llist.insert_node(llist_item)
extra = SinglyLinkedListNode(-1);
temp = llist.head;
for i in range(llist_count):
if i == index:
extra = temp
if i != llist_count-1:
temp = temp.next
temp.next = extra
result = has_cycle(llist.head)
print('\n')
print('Result: ',result)
'''
Output window:
Enter the index where the last node need to connected:2
Enter the linked list count: 3
Enter the element to be added on linked list one by one
1
2
3
Result: Cycle detection is Found
'''