Skip to main content

Rearrange linked list in sorted order in python

Python program for Rearrange linked list in sorted order. Here problem description and explanation.

#  Python 3 program for
#  Rearrange linked list in increasing (Sorted) order

#  Linked list node
class LinkNode :
	def __init__(self, data) :
		self.data = data
		self.next = None
	

class SingleLL :
	def __init__(self) :
		self.head = None
	
	#  Add new node at the end of linked list
	def insert(self, value) :
		#  Create  node
		node = LinkNode(value)
		if (self.head == None) :
			self.head = node
		else :
			temp = self.head
			#  Find last node
			while (temp.next != None) :
				#  Visit to next node
				temp = temp.next
			
			#  Add node at last position
			temp.next = node
		
	
	#  Display all Linked List elements
	def display(self) :
		if (self.head != None) :
			temp = self.head
			while (temp != None) :
				#  Display node value
				print(" ", temp.data, end = " ")
				#  Visit to next node
				temp = temp.next
			
		else :
			print("Empty Linked list")
		
	
	def arrange(self, element) :
		if (self.head == None) :
			self.head = element
		elif (self.head.data >= element.data) :
			element.next = self.head
			self.head = element
		else :
			temp = self.head
			#  Finding location of inserting nodes
			while (temp.next != None and 
                   temp.next.data < element.data) :
				#  Visit to next node
				temp = temp.next
			
			element.next = temp.next
			temp.next = element
		
	
	def sortElement(self) :
		if (self.head == None) :
			return
		
		temp = self.head
		hold = None
		self.head = None
		#  iterate linked list nodes and add in sorted order
		while (temp != None) :
			hold = temp
			#  Visit to next node
			temp = temp.next
			hold.next = None
			#  Logic to add node
			self.arrange(hold)
		
	

def main() :
	sll = SingleLL()
	#  Linked list sll1
	#  3 → 5 → 2 → 1 → 6 → 4 → -3 → NULL
	sll.insert(3)
	sll.insert(5)
	sll.insert(2)
	sll.insert(1)
	sll.insert(6)
	sll.insert(4)
	sll.insert(-3)
	print("Before Sort")
	#  Display all node
	sll.display()
	print("\nAfter Sort")
	#  -3 → 1 → 2 → 3 → 4 → 5 → 6 → NULL
	sll.sortElement()
	#  Display all node
	sll.display()

if __name__ == "__main__": main()
Example sorting a linked list in python

Output

Before Sort
  3   5   2   1   6   4   -3
After Sort
  -3   1   2   3   4   5   6




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