Linked List
Linked List
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def print_list(head):
while head:
print(head.val, end=" -> ")
head = head.next
print("None")
def reverse_list(head):
prev = None
while head:
next_node = head.next
head.next = prev
prev = head
head = next_node
return prev # New head of reversed list
def hasCycle(head):
slow, fast = head, head
while fast and fast.next:
slow = slow.next
fast = fast.next.next
if slow == fast:
return True # Cycle detected
return False
def detectCycle(head):
slow, fast = head, head
while fast and fast.next:
slow = slow.next
fast = fast.next.next
if slow == fast:
break # Cycle detected
🚀 Final Takeaway
Linked List problems revolve around sequential access, pointer manipulation, and
efficient insertions/deletions.
If you see “nodes”, “head”, “next pointer”, or “cycle”, it’s almost always a linked list
problem.