class Node:
def __init__(self, data):
self.data = data
self.next = None
class SingleLinkedList:
def __init__(self):
self.head = None
def display(self):
if self.head is None:
print("Linked list is empty")
else:
temp = self.head
while temp is not None:
print(temp.data, "-->", end="")
temp = temp.next
def insert_in_middle(self, data):
if self.head is None:
print("Linked list is empty")
else:
slow_ptr = self.head
fast_ptr = self.head
while fast_ptr.next is not None and fast_ptr.next.next is not None:
slow_ptr = slow_ptr.next
fast_ptr = fast_ptr.next.next
new_node = Node(data)
new_node.next = slow_ptr.next
slow_ptr.next = new_node
L = SingleLinkedList()
n1 = Node(10)
n2 = Node(20)
n3 = Node(30)
L.head = n1
n1.next = n2
n2.next = n3
L.display()
L.insert_in_middle(15)
L.display()