Print middle element of linked list using recursion in python

Python program for Print middle element of linked list using recursion. Here mentioned other language solution.
# Python 3 program for
# Find middle of singly linked list using recursion
# Linked list node
class LinkNode :
def __init__(self, data) :
self.data = data
self.next = None
class SingleLL :
def __init__(self) :
self.head = None
self.tail = None
# Add new Node at end of linked list
def addNode(self, data) :
node = LinkNode(data)
if (self.head == None) :
self.head = node
else :
# Append the node at last position
self.tail.next = node
self.tail = node
# Display linked list element
def display(self) :
if (self.head == None) :
print("\n Empty linked list")
return
temp = self.head
# iterating linked list elements
while (temp != None) :
print("",temp.data, end = " →")
# Visit to next node
temp = temp.next
print(" NULL")
# Find and print middle element
def printMiddle(self, node, mid) :
if (node != None and
node.next != None and
node.next.next != None) :
# Recursively finding the middle node
self.printMiddle(node.next.next, mid.next)
else :
# When we get middle node
print(" Middle Node :",mid.data)
# Handling the the request of
# finding middle of given linked list
def findMiddle(self) :
if (self.head == None) :
print(" Empty Linked List")
elif (self.head.next == None) :
# When single node exist
print(" Linked list contains only one node")
else :
print("\n Linked List ")
self.display()
self.printMiddle(self.head, self.head)
def main() :
sll1 = SingleLL()
sll2 = SingleLL()
# First linked list
# 1 → 2 → 3 → 4 → -5 → 6 → 7 → NULL
sll1.addNode(1)
sll1.addNode(2)
sll1.addNode(3)
sll1.addNode(4)
sll1.addNode(5)
sll1.addNode(6)
sll1.addNode(7)
# Second linked list
# 4 → 9 → 7 → 3 → 8 → 6 → NULL
sll2.addNode(4)
sll2.addNode(9)
sll2.addNode(7)
sll2.addNode(3)
sll2.addNode(8)
sll2.addNode(6)
# Test A
sll1.findMiddle()
# Test B
sll2.findMiddle()
if __name__=="__main__":
main()
Output
Linked List
1 → 2 → 3 → 4 → 5 → 6 → 7 → NULL
Middle Node : 4
Linked List
4 → 9 → 7 → 3 → 8 → 6 → NULL
Middle Node : 7
Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.
New Comment