Move a specific occurrence to end of linked list in python
Python program for Move a specific occurrence to end of linked list. Here problem description and explanation.
# Python 3 program for
# Move given occurrence to the end of 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
# Add new node at the end of linked list
def insert(self, value) :
# Create a 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")
# Move all occurrence of given element into the
# end of linked list position
def moveNodes(self, element) :
if (self.head == None) :
print("Empty linked list")
else :
# Some useful auxiliary variables
temp = self.head
prev = None
nodes = None
current = None
# Move a particular occurrence to end of linked list
while (temp != None) :
current = temp
# Visit to next node
temp = temp.next
if (current.data == element) :
# Find move element
if (self.head == current) :
# Move the front node element
# to the end position
self.head = temp
if (prev != None) :
# When have a intermediate node
# Unlink the move node
prev.next = temp
current.next = nodes
nodes = current
else :
prev = current
if (self.head == None and nodes != None) :
# All same nodes are exist in linked list
self.head = nodes
elif (prev != None and nodes != None) :
# Add occurrence to end
prev.next = nodes
else :
# When given occurrences element are not found
print("Occurrences element are not found : ", element)
def main() :
sll = SingleLL()
# Linked list
# 1 → 2 → 3 → 4 → 4 → 5 → 6 → 7 → NULL
sll.insert(7)
sll.insert(1)
sll.insert(2)
sll.insert(7)
sll.insert(3)
sll.insert(2)
sll.insert(7)
occurrence = 7
print("Before move occurrence ", occurrence ," to end")
# display all node
sll.display()
print("\nAfter move occurrence ", occurrence ," to end")
sll.moveNodes(occurrence)
sll.display()
if __name__ == "__main__": main()
Output
Before move occurrence 7 to end
7 1 2 7 3 2 7
After move occurrence 7 to end
1 2 3 2 7 7 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