Make the middle node head in a linked list in python
Python program for Make the middle node head in a linked list. Here problem description and explanation.
# Python 3 Program for
# Make the middle node as head of singly linked list
# 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 the end of linked list
def addNode(self, value) :
# Create a new node
node = LinkNode(value)
if (self.head == None) :
self.head = node
else :
self.tail.next = node
self.tail = node
# Display linked list element
def display(self) :
if (self.head == None) :
return
temp = self.head
# iterating linked list elements
while (temp != None) :
print(temp.data , end = " → ")
# Visit to next node
temp = temp.next
print("NULL")
def makeMiddleToHead(self) :
if (self.head == None) :
print("Empty Linked List")
else :
middle = None
temp = self.head
# Find the middle node
while (temp != None and temp.next != None and
temp.next.next != None) :
if (middle == None) :
middle = temp
else :
middle = middle.next
temp = temp.next.next
if (middle == None) :
# Less then 3 nodes
print("Less then three element")
else :
# Swap nodes link
temp = middle.next
middle.next = temp.next
temp.next = self.head
self.head = temp
def main() :
sll = SingleLL()
# Linked list
# 1 → 2 → 3 → 4 → 5 → 6 → 7 → null
sll.addNode(1)
sll.addNode(2)
sll.addNode(3)
sll.addNode(4)
sll.addNode(5)
sll.addNode(6)
sll.addNode(7)
print("Before Linked List ")
sll.display()
sll.makeMiddleToHead()
print("After Linked List ")
sll.display()
if __name__ == "__main__": main()
Output
Before Linked List
1 → 2 → 3 → 4 → 5 → 6 → 7 → NULL
After Linked List
4 → 1 → 2 → 3 → 5 → 6 → 7 → NULL
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