Skip to main content

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




Comment

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