Is Linked List Circular
Detect if a Linked List is circular
from shared.circular_linked_list import CircularLinkedList
from shared.node import Node
def is_linked_list_circular(linked_list_):
"""
Detect if a Linked List is circular
"""
current = linked_list_.node
registry = set()
while current is not None:
# The linked list is circular if one of its element points to previous element
if current in registry:
return True
registry.add(current)
current = current.next
return False
if __name__ == "__main__":
l1 = CircularLinkedList()
l1.add(Node(1))
l1.add(Node(2))
l1.add(Node(3))
l1.add(Node(4), join=True)
assert is_linked_list_circular(l1)
l2 = CircularLinkedList()
l2.add(Node(1))
l2.add(Node(2))
l2.add(Node(3))
l2.add(Node(4))
assert not is_linked_list_circular(l2)
Updated on 2021-09-09