Python Program For Moving Last Element To Front Of A Given Linked List
Last Updated :
03 Aug, 2022
Write a function that moves the last element to the front in a given Singly Linked List. For example, if the given Linked List is 1->2->3->4->5, then the function should change the list to 5->1->2->3->4. Algorithm: Traverse the list till the last node. Use two pointers: one to store the address of the last node and the other for the address of the second last node. After the end of the loop do the following operations.
- Make second last as last (secLast->next = NULL).
- Set next of last as head (last->next = *head_ref).
- Make last as head ( *head_ref = last).
Python3
class Node:
def __init__( self , data):
self .data = data
self . next = None
class LinkedList:
def __init__( self ):
self .head = None
def push( self , data):
new_node = Node(data)
new_node. next = self .head
self .head = new_node
def printList( self ):
tmp = self .head
while tmp is not None :
print (tmp.data, end = ", " )
tmp = tmp. next
print ()
def moveToFront( self ):
tmp = self .head
sec_last = None
if not tmp or not tmp. next :
return
while tmp and tmp. next :
sec_last = tmp
tmp = tmp. next
sec_last. next = None
tmp. next = self .head
self .head = tmp
if __name__ = = '__main__' :
llist = LinkedList()
llist.push( 5 )
llist.push( 4 )
llist.push( 3 )
llist.push( 2 )
llist.push( 1 )
print (
"Linked List before moving last to front " )
llist.printList()
llist.moveToFront()
print (
"Linked List after moving last to front " )
llist.printList()
|
Output:
Linked list before moving last to front
1 2 3 4 5
Linked list after removing last to front
5 1 2 3 4
Time Complexity: O(n) where n is the number of nodes in the given Linked List.
Space Complexity: O(1) because using constant variables
Please refer complete article on Move last element to front of a given Linked List for more details!
Share your thoughts in the comments
Please Login to comment...